如何用逻辑符号切割矩阵?

时间:2015-10-16 00:58:19

标签: python-3.x numpy

我可以将以下代码应用于数组。

from numpy import *
A = eye(4)
A[A[:,1] > 0.5,:]

但是如何将相似的方法应用于垫子?

A = mat(eye(4))
A[A[:,1] > 0.5,:]

我知道上面的代码是错误的,但我该怎么办?

1 个答案:

答案 0 :(得分:0)

问题在于,当Anumpy.matrix时,A[:,1]会返回 2-d 矩阵,因此A[:,1] > 0.5也是2-d。任何使这个表达式看起来与A ndarray时创建的内容相同的东西都可以。例如,您可以编写A.A[:,1] > 0.5.A属性返回矩阵的ndarray视图)或(A[:,1] > 0.5).A1A1属性返回展平{ {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来轻松编写。