过滤掉多维 numpy 数组中的行
Filtering out rows in multidimensional numpy arrays
假设我有一个这样的数组:
array([[ 1, 2],
[-1, -2],
[ 0, 0],
[-1, 2],
[ 2, -1]])
我想过滤掉所有包含负数的行。
而且,希望得到这个:
array([[ 1, 2],
[ 0, 0]])
到目前为止我试过这个:
>>> print(a[a>=0].reshape(3,2))
array([[1, 2],
[0, 0],
[2, 2]])
但是如您所见,我得到了一维数组并且我得到不需要的行(在本例中是 [2, 2]
)
如何在不使用任何 for 循环的情况下执行此操作?提前致谢。
您可以使用np.all
来检查一行中的所有值是否都满足条件。
import numpy as np
a = np.array([[ 1, 2],
[-1, -2],
[ 0, 0],
[-1, 2],
[ 2, -1]])
a[np.all(a >= 0, axis=1)]
# returns:
array([[1, 2],
[0, 0]])
假设我有一个这样的数组:
array([[ 1, 2],
[-1, -2],
[ 0, 0],
[-1, 2],
[ 2, -1]])
我想过滤掉所有包含负数的行。
而且,希望得到这个:
array([[ 1, 2],
[ 0, 0]])
到目前为止我试过这个:
>>> print(a[a>=0].reshape(3,2))
array([[1, 2],
[0, 0],
[2, 2]])
但是如您所见,我得到了一维数组并且我得到不需要的行(在本例中是 [2, 2]
)
如何在不使用任何 for 循环的情况下执行此操作?提前致谢。
您可以使用np.all
来检查一行中的所有值是否都满足条件。
import numpy as np
a = np.array([[ 1, 2],
[-1, -2],
[ 0, 0],
[-1, 2],
[ 2, -1]])
a[np.all(a >= 0, axis=1)]
# returns:
array([[1, 2],
[0, 0]])