Python 3.x 如何用逻辑符号分割矩阵?
我可以将以下代码应用于数组Python 3.x 如何用逻辑符号分割矩阵?,python-3.x,numpy,Python 3.x,Numpy,我可以将以下代码应用于数组 from numpy import * A = eye(4) A[A[:,1] > 0.5,:] 但是我怎样才能将类似的方法应用到垫子上呢 A = mat(eye(4)) A[A[:,1] > 0.5,:] 我知道上面的代码是错误的,但是我应该怎么做呢?问题是,当A是numpy.matrix时,A[:,1]返回一个二维矩阵,因此A[:,1]>0.5也就是二维矩阵。当A是ndarray时,任何使此表达式看起来与创建的表达式相同的东西都可以工作。例如,您可
from numpy import *
A = eye(4)
A[A[:,1] > 0.5,:]
但是我怎样才能将类似的方法应用到垫子上呢
A = mat(eye(4))
A[A[:,1] > 0.5,:]
我知道上面的代码是错误的,但是我应该怎么做呢?问题是,当
A
是numpy.matrix
时,A[:,1]
返回一个二维矩阵,因此A[:,1]>0.5也就是二维矩阵。当A
是ndarray
时,任何使此表达式看起来与创建的表达式相同的东西都可以工作。例如,您可以编写A.A[:,1]>0.5
(.A
属性返回矩阵的ndarray
视图),或(A[:,1]>0.5).A1
(A1
属性返回展平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
类。大多数代码都可以通过自始至终使用ndarray
来轻松编写。问题是,当A
是一个numpy.matrix
时,A[:,1]
返回一个二维矩阵,因此A[:,1]>0.5也就是二维矩阵。当A
是ndarray
时,任何使此表达式看起来与创建的表达式相同的东西都可以工作。例如,您可以编写A.A[:,1]>0.5
(.A
属性返回矩阵的ndarray
视图),或(A[:,1]>0.5).A1
(A1
属性返回展平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
类。大多数代码都可以通过自始至终使用ndarray
s轻松编写。谢谢。您的方法在选择行向量时效果很好。但是,如果我不想先转置矩阵,然后应用上述方法,那么选择列向量怎么样?谢谢。您的方法在选择行向量时效果很好。但是,如果我不想先转置矩阵,然后应用上面的方法,那么选择列向量怎么样?