试图在Python

时间:2017-11-28 18:12:06

标签: python arrays numpy matrix

我在Python中遇到了以下声明:

a = m[:,1].a - m[:,0].a

如果删除.a部分,我理解我们正在尝试从第二列中减去数组中的第一列。

添加.a会有什么作用?

感谢。

1 个答案:

答案 0 :(得分:0)

在撰写评论时,我意识到这种符号与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(结构化数组或重新排列属性)访问第一个字段。现在我们可以写一个像你这样的表达式:

In [34]: arr[:,0].a - arr[:,1].a
Out[34]: array([-1, -1, -1])

结构化数组在SO上很常见,尤其是在从CSV文件加载数据时。重组变体实际上可能更老,但已经不再使用了。例如,recfunctions库需要特殊导入。显然,属性表示法并不特殊或有用。

如果这不对,您需要告诉我们更多有关报价来源的信息。