[英]Trying to understand this statement in Python
我在Python中遇到了以下语句:
a = m[:,1].a - m[:,0].a
如果我删除了.a
部分,则说明我们正在尝试从第二列中减去数组中的第一列。
添加.a
什么用?
谢谢。
在写我的评论时,我意识到这种表示法与recarray
是一致的。
用几个字段定义一个dtype
In [28]: dt = np.dtype([('a',int),('b',float)])
初始化recarray
这个dtype
:
In [29]: arr = np.ones((3,2), dtype=dt).view(np.recarray)
In [30]: arr['a'] = np.arange(6).reshape(3,2)
In [31]: arr
Out[31]:
rec.array([[(0, 1.), (1, 1.)],
[(2, 1.), (3, 1.)],
[(4, 1.), (5, 1.)]],
dtype=[('a', '<i4'), ('b', '<f8')])
In [32]: arr.a
Out[32]:
array([[0, 1],
[2, 3],
[4, 5]])
可以使用arr['a']
或arr.a
(结构化数组或recarray属性)访问第一个字段。 现在我们可以编写一个像您这样的表达式:
In [34]: arr[:,0].a - arr[:,1].a
Out[34]: array([-1, -1, -1])
结构化数组在SO上很常见,尤其是从CSV文件加载数据时。 recarray变体实际上可能更旧,但已不使用。 例如, recfunctions
库需要特殊的导入。 显然,属性符号不是那么特殊或有用。
如果这不正确,您需要向我们详细说明报价来源。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.