如何使用条件从 numpy 数组中删除特定行?
How to delete specific rows from a numpy array using a condition?
这是代码
a = np.array([[ 0, 1],
[ 3, 11],
[4,2]])
这是我试过的
a= a[a[0]>0,:]
当我只有两个元素时它工作正常,但它会抛出一个 error.What 我想做的是在第一列中如果有一个值小于一个我需要删除它整行。
所以预期的输出是
([ 3, 11],
[4,2]])
我希望有一个解决方案,即使每个项目有 2 个以上的元素,我也可以概括,例如
([2,3,4,5],
[8,2,4,6],
[2,4,9,1],
[5,3,2,0],)
那么代码的应用会给出如
这样的结果
([2,3,4,5],
[8,2,4,6],
[2,4,9,1],)
任何建议。
仅对第一列使用 a[:,0] > 0
,它将从第一列中提取所有值并检查哪些值 > 0 或您想要的任何条件:
In [50]: a = np.array([[ 0, 1],
[ 3, 11],
[4,2]])
In [51]: a[a[:,0] > 0]
Out[51]:
array([[ 3, 11],
[ 4, 2]])
如果要检查每一行中的所有值,可以使用 all
:
In [43]: a = np.array([[ 0, 1],
[ 3, 11],
[4,2]])
In [44]: a[(a >= 0).all(axis=1)]
Out[44]:
array([[ 3, 11],
[ 4, 2]])
In [45]: a = np.array ([[2,3,4,5],
[8,2,4,6],
[2,4,9,1],
[5,3,2,0]])
In [46]: a[(a > 0).all(axis=1)]
Out[46]:
array([[2, 3, 4, 5],
[8, 2, 4, 6],
[2, 4, 9, 1]])
这是代码
a = np.array([[ 0, 1],
[ 3, 11],
[4,2]])
这是我试过的
a= a[a[0]>0,:]
当我只有两个元素时它工作正常,但它会抛出一个 error.What 我想做的是在第一列中如果有一个值小于一个我需要删除它整行。
所以预期的输出是
([ 3, 11],
[4,2]])
我希望有一个解决方案,即使每个项目有 2 个以上的元素,我也可以概括,例如
([2,3,4,5],
[8,2,4,6],
[2,4,9,1],
[5,3,2,0],)
那么代码的应用会给出如
这样的结果 ([2,3,4,5],
[8,2,4,6],
[2,4,9,1],)
任何建议。
仅对第一列使用 a[:,0] > 0
,它将从第一列中提取所有值并检查哪些值 > 0 或您想要的任何条件:
In [50]: a = np.array([[ 0, 1],
[ 3, 11],
[4,2]])
In [51]: a[a[:,0] > 0]
Out[51]:
array([[ 3, 11],
[ 4, 2]])
如果要检查每一行中的所有值,可以使用 all
:
In [43]: a = np.array([[ 0, 1],
[ 3, 11],
[4,2]])
In [44]: a[(a >= 0).all(axis=1)]
Out[44]:
array([[ 3, 11],
[ 4, 2]])
In [45]: a = np.array ([[2,3,4,5],
[8,2,4,6],
[2,4,9,1],
[5,3,2,0]])
In [46]: a[(a > 0).all(axis=1)]
Out[46]:
array([[2, 3, 4, 5],
[8, 2, 4, 6],
[2, 4, 9, 1]])