我可以将以下代码应用于数组。
from numpy import *
A = eye(4)
A[A[:,1] > 0.5,:]
但是如何将相似的方法应用于垫子?
A = mat(eye(4))
A[A[:,1] > 0.5,:]
我知道上面的代码是错误的,但我该怎么办?
答案 0 :(得分:0)
问题在于,当A
为numpy.matrix
时,A[:,1]
会返回 2-d 矩阵,因此A[:,1] > 0.5
也是2-d。任何使这个表达式看起来与A
ndarray
时创建的内容相同的东西都可以。例如,您可以编写A.A[:,1] > 0.5
(.A
属性返回矩阵的ndarray
视图)或(A[:,1] > 0.5).A1
(A1
属性返回展平{ {1}})。
例如,
ndarray
由于像这样的怪癖,我(和许多其他人)建议避免使用In [119]: A
Out[119]:
matrix([[ 1., 0., 0., 0.],
[ 0., 1., 0., 0.],
[ 0., 0., 1., 0.],
[ 0., 0., 0., 1.]])
In [120]: A[(A[:, 1] > 0.5).A1,:]
Out[120]: matrix([[ 0., 1., 0., 0.]])
In [121]: A[A.A[:, 1] > 0.5,:]
Out[121]: matrix([[ 0., 1., 0., 0.]])
类。大多数代码都可以通过使用numpy.matrix
来轻松编写。