问题标签 [recarray]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
178 浏览

python - 关于recarray的多字段索引的文档

numpy docs的一次访问多个字段部分中,说:

请注意,无论请求的顺序如何,这些字段总是以相同的顺序返回

该文档还给出了一个示例,如下所示:

但是,我自己使用 numpy 1.6.1 运行了代码并得到了不同的结果:

这种行为是从 numpy 1.6 更改为 1.7 还是我错过了什么?

编辑我已经在 numpy 1.7.1 中测试了代码,结果与 numpy 1.6 相同。

0 投票
3 回答
950 浏览

python - 在“空”行处切片 numpy recarray

numpy.recarray使用 -Method 从 .csv-Inputfile 创建了一个csv2rec()。Inputfile 和因此的 recarray 有没有数据的空行(resp. nan-values)。我想将 -rows 处的这个 recarray 切片nan成多个子数组,不包括nan最终数组中的 -rows,如下所示。

具有 2 列的原始记录:

2 个没有 nan 值的子数组:

我知道这可以使用循环来管理,但也许有一种更简单、更优雅的方式?另外:是否可以保留每列的标题信息,以便我可以通过参数名称引用列,而不仅仅是切片后的 col-index?

0 投票
1 回答
168 浏览

python - 将新记录添加到 numpy 结构化数组

这是对 numpy 数组的早期学习的延续。
结构化数组是从列表的元素创建的 - 然后填充值(未在下面显示)。

填充的数组如下所示:

1.我们如何在上面添加新的顶点?
2.添加顶点后,将以下数组添加到结构化数组中的最干净的过程是什么(注意:并非此数组中的所有顶点都是新的):

预期输出(请多多包涵):

0 投票
1 回答
760 浏览

python - 通过 C-API 访问 Numpy Recarray

如果我们有一个 Numpy recarray: x = np.array([(1.,2.)], dtype=np.dtype([('a','<f8'),('b','<f8')]))
我们可以在 Python 中访问它的字段:
x['a']或者x['b']
但是如果这个数组作为一个 C 程序传递给PyArrayObject我们如何访问它的字段?
我意识到我们可以通过以下方式获得 C 中的 dtype:PyArray_Descr *dtype = PyArray_DTYPE(arr)
PyObject *fields = dtype->fields但是如何使用它来访问数据x['a']

0 投票
1 回答
3078 浏览

python - 如何为嵌套的 numpy ndarray 设置 dtype?

我正在研究以下数据结构,我试图从中创建一个包含所有数据的 ndarray:

所以,我希望我可以通过使用以下代码将数据转换为一个 ndarray:

此代码引发异常,因为存在list(tuple, list(tuple))模式。更改为data后:

然后代码可以运行,但是结果是错误的,因为对于response字段,只取response数组的第一个条目:

而不是整个数组。

我的问题是,如何正确设置dtype关键字以使其正常工作?在这两种情况下: 1. 嵌套的元组列表,其中包含元组列表;2. 一个嵌套的元组列表,其中包含一个不均匀的 ndarray。

先感谢您!

0 投票
1 回答
744 浏览

python - 如何访问 numpy recarray 的字段#k?

我可以创建一个recarray 并按名称访问其成员:

我可以通过行索引访问数据,或者遍历行:

但是我怎样才能遍历这些字段或获取krecarray 中的第一个字段呢?

0 投票
2 回答
209 浏览

python - 当一个 dtype 是对象时,numpy 掩码数组的行为不同

假设我有以下两个掩码数组声明:

正如您所看到的,唯一(轻微的?)区别是“p3”字段是一个对象 forarr1和一个 int for arr2

呼叫arr2[0]是好的并且给(--, 2.0, 3)

但是,当屏蔽 的某些元素时arr1,调用arr1[0]会出现以下错误:

*** ValueError: Setting void-array with object members using buffer.

显然,将一个字段声明为对象会引发一些麻烦,但我不知道为什么。

您对此有何看法,您是否会看到一些规避该问题的方法,请记住,我确实需要以这种方式访问​​“arr1 [0]”?

多谢

埃里克

编辑:这个问题发生在 numpy 版本 < 1.8。我试过最新版本(1.8),没问题。

0 投票
1 回答
252 浏览

python - 子类化空 numpy recarray 丢失其类型并在 numpy 1.8 中添加属性

我正在尝试实现 numpy recarray (recsub) 的子类并将其实例分配给 dtype 'object' (ndarr) 的 ndarray。它工作得很好,但是当子类的recarray用一个空数组实例化时我遇到了一个问题。这是子类 recarry 的代码:

我将ndarray创建为:

现在,如果我创建两个 recsub 实例:

现在这是正在发生的奇怪的事情。的输出:

是:

所以我无法访问 ndarr[1].x

这曾经在 numpy 1.7 中有效,但在 numpy 1.8 中不再有效!因此,在使用形状 () 而不是 (n) 实例化重新数组时,似乎缺少一些东西

欢迎任何建议,

tnx 提前,

0 投票
1 回答
2396 浏览

python - 将带有字符串的结构化 numpy 数组传递给 cython 函数

我正在尝试通过定义 cython 结构类型在 cython 中创建一个函数,该函数接受 numpy 结构化数组或记录数组。假设我有数据:

(注意:下面描述的问题在有或没有空终止符的情况下都会发生)

然后我有 cython 代码:

当我尝试运行时test_struct(a),我收到错误:

如果在数组和相应的结构中重新排序以使包含字符串的字段彼此不相邻,则该函数按预期工作。看起来 Cython 函数似乎没有正确检测到cd字段之间的边界,并且认为您正在传递长度总和的 char 数组。

除了重新洗牌数据(这是可能的但不理想),还有另一种方法可以将具有固定长度字符串数据的recarray传递给Cython吗?

更新:这似乎是一个潜在的 Cython 错误。请参阅以下关于 Cython google 组的讨论,该讨论暗示了问题出现的位置:

https://groups.google.com/forum/#!topic/cython-users/TbLbXdi0_h4

更新 2:截至 2014 年 2 月 23 日,此错误已在 Github 上的主 cython 分支中修复,该补丁计划包含在 v0.20.2 中:https ://github.com/cython/cython/commit/58d9361e0a6d4cb3d4e87775f78e0550c2fea836

0 投票
2 回答
473 浏览

python - 是否可以在 python 2.7 中映射一个重新数组?

在一个通过 qsub 在具有 256GB 内存的集群上运行的程序中,我有一个总计 30GB 的大型全局记录数组。我目前是该集群上的唯一用户,因此与 RAM 的分配没有冲突。当在这个重新阵列上循环时,系统似乎将对象分流到磁盘上,而不是将其保存在 RAM 中,从而使循环速度减慢了 5 倍以上。我一直在研究通过以下方式在对象上使用 mmap 并收到以下错误。

是否可以用来在 RAMmmap中保存一个recarray对象,或者这是对 mmap 方法的完全滥用,还是只能对其他对象类型(如字符串或文件)执行此操作?

非常感谢