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

use*_*350 5 python arrays numpy

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

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

显然,这不起作用:

c = a[a[:,1] in b]
Run Code Online (Sandbox Code Playgroud)

Jai*_*ime 10

这样做的numpythonic方式是使用in1d,例如:

a[np.in1d(a[:, 1], b)]
Run Code Online (Sandbox Code Playgroud)


luc*_*asg 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]])
Run Code Online (Sandbox Code Playgroud)

  • 这对于大型数组来说非常慢。使用 NumPy 数组时,应首选矢量化习惯用法。 (6认同)