- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
假设我用相同的 dtype 制作了两个 recarrays 并将它们堆叠起来:
>>> import numpy as np
>>> dt = [('foo', int), ('bar', float)]
>>> a = np.empty(2, dtype=dt).view(np.recarray)
>>> b = np.empty(3, dtype=dt).view(np.recarray)
>>> c = np.hstack((a,b))
尽管 a
和 b
是 recarrays,但 c
不是:
>>> c.foo
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'foo'
>>> d = c.view(np.recarray)
>>> d.foo
array([ 0, 111050731618561, 0,
7718048, 8246760947200437872])
我显然可以再次将它变成一个 recarray,如上面的 d
所示,但这很不方便。堆叠两个重排不产生另一个重排是有原因的吗?
最佳答案
或者,numpy.lib.recfunctions
中有一些辅助工具我偶然发现了here .该模块具有合并和堆叠recarrays
的功能:
from numpy.lib.recfunctions import stack_arrays
c = stack_arrays((a, b), asrecarray=True, usemask=False)
c.foo
>>> array([ 140239282560000, 4376479720, -4611686018427387904,
4358733828, 4365061216])
如果要向 recarray
添加额外的列,可以使用 merge_arrays
来完成:
import numpy as np
from numpy.lib.recfunctions import merge_arrays
dt1 = [('foo', int), ('bar', float)]
dt2 = [('foobar', int), ('barfoo', float)]
aa = np.empty(6, dtype=dt1).view(np.recarray)
bb = np.empty(6, dtype=dt2).view(np.recarray)
cc = merge_arrays((aa, bb), asrecarray=True, flatten=True)
type(cc)
>>> numpy.core.records.recarray
(虽然不是问题的答案,但我将后一个示例作为引用发布)
关于python - 堆叠 numpy recarrays 而不会丢失它们的 recarrayness,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1791791/
假设我用相同的 dtype 制作了两个 recarrays 并将它们堆叠起来: >>> import numpy as np >>> dt = [('foo', int), ('bar', float
如果我以这种方式创建一个 recarray: In [29]: np.rec.fromrecords([(1,'hello'),(2,'world')],names=['a','b']) 结果看起来不
我有一对 numpy 数组;这是一个简单的等效示例: t = np.linspace(0,1,100) data = ((t % 0.1) * 50).astype(np.uint16) 我希望这些是
我有一个结构化的 numpy 数组,我正在按顺序对其进行排序。 它工作得很好,但只有一个方向! 降序: sort(myStructuredArray,order=my_order)[::-1] 和 上
我有一个名为 data.csv 的数据文件 name,value A,10 1,20 B,30 3,20 ... 所以问题是我使用 numpy 和 mlab 来加载这个 csvfile data =
在numpy docs的一次访问多个字段部分中, 说: 请注意,字段总是以相同的顺序返回,不管它们被要求的顺序如何。 文档还给出了一个例子如下: >>> x = np.array([(1.5,2.5,
我有一个 csv 文件,其中两列(v3 和 v7)对于所有观察结果都是空白的: v1,v2,v3,v4,v5,v6,v7 GNB,1980,,20,-1.168689,0.4619077, GNB,1
给定一个元组列表,其中每个元组代表表中的一行,例如 tab = [('a',1),('b',2)] 有没有一种简单的方法可以将其转换为记录数组?我试过了 np.recarray(tab,dtype=[
构造结构化/重载数组时,我对类型转换的行为感到困惑: 这个简单的示例接受数字字段,但将类型定义为字符串: data = [(1.0, 2), (3.0, 4)] np.array(data, dtyp
有没有一种简单的方法可以在不创建新的 recarray 的情况下将记录/行添加到 numpy recarray?假设我有一个占用 1Gb 内存的 recarray,我希望能够向其中添加一行而不让 py
我用 C# 编写了一个数据使用者,它从 python API 脚本读取字符串数据。到目前为止,我发现性能最好的方法是将数据放入 python 中的 numpy-recarray,将其打印到控制台并使用
我正在尝试复制一个recarray 并更改新数组中字段/记录的名称。但是,这会修改原始数组的名称(但是,这些值并未取消链接)。例子: import numpy as np import copy 定义
我在创建 datetime64 类型的记录数组时遇到问题。我正在运行 Python 2.7、Numpy 1.7。 这是一个最小的例子: p_dtype = np.dtype({"names": ['t
numpy.recarray.tobytes 的逆是什么? >>> import numpy as np >>> A = np.array([(28483,27759)],dtype=[('x','>
我想创建一个 numpy.recarray 的子类,当数据添加到超出其当前长度的行时自动调整大小。 下面的代码完成了大部分我想要的。 class autorecarray(numpy.recarray
我在 QGIS-user forum 上发布了这个问题但这可能太技术性了,因此我也捕获机会在这里尝试一下。 我的计划是有一个 QGIS 插件来读取和绘制与矢量图层中选定点对应的时间序列数据(这些点代表
有没有一种方便的方法可以删除 recarray 中包含某些值的行?假设我有以下数组, a=numpy.array([(1.0, 2.0, 3.0), (4.0, 5.0, 10.0),(1.0,10.
我有一个来自读取 csv 文件的 recarray。我有兴趣将列的子集转换为连续的 float 组。我想避免将它们转换为列表或将它们一一堆叠。我尝试了 https://stackoverflow.co
我是 numpy 的新手,我正在尝试替换 recarray 中的值。所以我有这个数组: import numpy as np d = [('1', ''),('4', '5'),('7', '8')]
我有一个 recarray,其中包含几个用于选择子集的列。有点像 >>> x array([ ('label1',True,3), ('label2',True,2),
我是一名优秀的程序员,十分优秀!