繁体   English   中英

numpy 结构化数组不一致

[英]numpy structured array inconsistency

我正在编写一个使用 NumPy arrays 的库,并且我想在任何dtype 上执行标量操作。 这适用于大多数结构化 arrays,但是在为结构化元素创建具有多个维度的结构化 arrays 时遇到问题。 举个例子,

x = np.zeros(10, np.dtype('3float32,int8'))
print(x.dtype)
print(x.shape)

节目

[('f0', '<f4', (3,)), ('f1', 'i1')]
(10,)

x = np.zeros(10, np.dtype('3float32'))
print(x.dtype)
print(x.shape)

产量

float32
(10, 3)

也就是说,创建具有单个多维字段的结构化数组似乎反而扩展了数组形状。 这意味着最后一个示例的维数是 2,而不是我预期的 1。 我在这里有什么遗漏或已知的解决方法吗?

使用与第一个工作示例中显示的相同的dtype表示法:

In [92]: x = np.zeros(3, np.dtype([('f0','<f4',(3,))]))

In [93]: x
Out[93]: 
array([([0., 0., 0.],), ([0., 0., 0.],), ([0., 0., 0.],)],
      dtype=[('f0', '<f4', (3,))])

我通常不使用字符串速记,

In [99]: np.dtype('3float32')
Out[99]: dtype(('<f4', (3,)))     # no field name assigned

In [100]: np.zeros(3,_)
Out[100]: 
array([[0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.]], dtype=float32)

几个逗号分隔的字符串创建命名字段:

In [102]: np.dtype('3float32,i4')
Out[102]: dtype([('f0', '<f4', (3,)), ('f1', '<i4')])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM