从NumPy数组中删除一些数组元素

3

我有一个numpy数组:

a = np.array([[ 255,255,255],
              [ 255,2,255],
              [ 3,123,23],
              [ 255,255,255],
              [ 0, 255, 3]])

我希望删除所有元素为 [ 255,255,255] 的项目,结果应为:
[[ 255,2,255],
 [ 3,123,23],
 [ 0, 255, 3]])

我尝试使用:

import numpy as np
a = np.array([[ 255,255,255],
              [ 255,2,255],
              [ 3,123,23],
              [ 255,255,255],
              [ 0, 255, 3]])

np.delete(a, [255,255,255])

但是没有任何反应。
2个回答

4
你可以这样做:
np.array([x for x in a if np.any(x != 255)])

这会产生:

array([[255,   2, 255],
       [  3, 123,  23],
       [  0, 255,   3]])

编辑:为了避免使用列表推导式 -

np.delete(a, np.where((a == 255).all(axis=1)), axis=0)

3
这里有一个快速向量化的方法来实现它。
a[(a!=255).any(axis=1),:]
Out[136]: 
array([[255,   2, 255],
       [  3, 123,  23],
       [  0, 255,   3]])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接