我在numpy中遇到以下语句:
x=numpy.zeros((2,2),dtype=[('x','i4'),('y','i4')])
输出如下:
[[(0,0)(0,0)]
[(0,0)(0,0)]]
[('x','i4'),('y','i4')]
是什么意思?请解释。
答案 0 :(得分:4)
这是给数组元素指定名称和数据类型的方式。
在这种情况下,可以使用'x'
访问数组中每个条目的第一个元素的名称,而可以使用'y'
访问第二个元素:
>>> x['x']
array([[0, 0],
[0, 0]])
>>> x['y']
array([[0, 0],
[0, 0]])
如果我们更改其中一项,则更清楚:
>>> x['x'] = numpy.array([[1,1],[1,1]])
>>> x
array([[(1, 0), (1, 0)],
[(1, 0), (1, 0)]], dtype=[('x', 'i4'), ('y', 'i4')])
如您所见,每个条目中的第一个元素都已更改。
'i4'
部分指定元素的数据类型。具体来说:
i
表示有符号整数
4
表示4字节大小
请参阅文档here
答案 1 :(得分:0)
如果您查看结构化数组的docs,则dtype表示numpy数组中值的数据类型。
[('x','i4'),('y','i4')]
表示x
是32位整数,y
也是32位整数。
答案 2 :(得分:0)
此处i4是4字节(32位)整数。
您将在https://docs.scipy.org/doc/numpy-1.14.0/reference/arrays.dtypes.html中找到更多详细信息(i4大约在页面的一半)。