10

我有一个矩阵和一个布尔向量:

>>>from numpy import *
>>>a = arange(20).reshape(4,5)
array([[ 0,  1,  2,  3,  4],
   [ 5,  6,  7,  8,  9],
   [10, 11, 12, 13, 14],
   [15, 16, 17, 18, 19]])

>>>b = asarray( [1, 1, 0, 1] ).reshape(-1,1)
array([[1],
   [1],
   [0],
   [1]])

现在我想选择这个矩阵中所有对应的行,其中向量中的对应索引等于零。

>>>a[b==0]
array([10])

我怎样才能使它返回这个特定的行?

[10, 11, 12, 13, 14]
4

1 回答 1

4

的形状b有些奇怪,但如果您可以将其制作为更好的索引,那么它是一个简单的选择:

idx = b.reshape(a.shape[0])
print a[idx==0,:]

>>> [[10 11 12 13 14]]

您可以将其解读为“选择索引为 0 的所有行,并为所选的每一行获取所有列”。您的预期答案实际上应该是一个列表列表,因为您要求所有符合条件的行。

于 2013-04-24T20:36:16.400 回答