如何删除numpy 2d数组中的行,其中特定列中的值不在其他数组/列表中。速度很重要。如何删除特定列值不在其他数组中的行?
我发现了如何通过调节柱只保留行特定的值:
xyzv = xyzv[xyzv[:,3].astype(int) == 100]
但我需要它的方式更值(我的价值观的数组)进行比较。我只是拍到了黑暗中:
xyzv = xyzv[xyzv[:,3].astype(int) in my_values]
和其他一些变化。但蟒蛇并没有笑。
如何删除numpy 2d数组中的行,其中特定列中的值不在其他数组/列表中。速度很重要。如何删除特定列值不在其他数组中的行?
我发现了如何通过调节柱只保留行特定的值:
xyzv = xyzv[xyzv[:,3].astype(int) == 100]
但我需要它的方式更值(我的价值观的数组)进行比较。我只是拍到了黑暗中:
xyzv = xyzv[xyzv[:,3].astype(int) in my_values]
和其他一些变化。但蟒蛇并没有笑。
您可以使用np.in1d
-
search_nums = [100,102] # List of search numbers. NumPy arrays would work too.
xyzv = xyzv[np.in1d(xyzv[:,3].astype(int),search_nums)]
采样运行 -
In [42]: xyzv = np.random.randint(98,104,(7,4)).astype(float)
In [43]: xyzv
Out[43]:
array([[ 98., 100., 102., 102.],
[ 99., 102., 102., 101.],
[ 100., 99., 98., 100.],
[ 100., 101., 102., 99.],
[ 99., 102., 103., 101.],
[ 103., 100., 98., 102.],
[ 102., 101., 103., 101.]])
In [44]: search_nums = [100,102]
In [45]: xyzv[np.in1d(xyzv[:,3].astype(int),search_nums)]
Out[45]:
array([[ 98., 100., 102., 102.],
[ 100., 99., 98., 100.],
[ 103., 100., 98., 102.]])
是xyzv一个numpy的二维数组,这是不是xyzv [:3] .astype(INT)== 100?给布尔值?你怎么能传递一个布尔值在这里xyzv [布尔]? –