numpy:如何根据一系列标准选择行

时间:2013-10-01 08:31:05

标签: python arrays numpy

如何获取第二列等于4或6的行?

a = np.array(np.mat('1 2; 3 4; 5 6; 7 4'))
b = [4,6]

显然,这不起作用:

c = a[a[:,1] in b]

4 个答案:

答案 0 :(得分:10)

这样做的简单方法是使用in1d,例如:

a[np.in1d(a[:, 1], b)]

答案 1 :(得分:2)

[x for a x [1] in(4,6,)]中的x应该适用于你提到的情况。

编辑:正如@georgesl所说,“理想的方法”是在构造数组时使用迭代器,而不是在字符串上使用numpy.mat方法。

答案 2 :(得分:2)

你可以这样做:

check = np.logical_or(a[:,1]==4, a[:,1]==6)
c = a[check,:]

您还可以将|用于逻辑运算符or

check = (a[:,1]==4) | (a[:,1]==6)

答案 3 :(得分:1)

您可以使用itertools.ifilter

from itertools import ifilter
c = np.array([ e for e in ifilter(lambda x: x[1] in b, a) ])
>> array([[3,4],
          [5,6],
          [7,4]])