如何从numpy ndarray中删除特定值

时间:2017-03-02 14:05:50

标签: python numpy

我有一个numpy ndarray,看起来像:

SocketChannels

我想删除所有零元素,即[[ 0 0 0], [ 0 0 0], [ 0 0 0], [ 0 0 0], [ 0 0 0], [ 0 0 0], [ 0 0 0], [225 224 228], [163 164 174], [205 212 229], [116 130 153], [ 81 101 132], [ 34 56 92], [ 2 16 35], [ 33 44 64], [ 38 49 71], [ 63 75 99], [ 76 88 116], [ 45 62 95], [ 29 50 88], [ 18 40 82], [ 0 0 0], [ 0 0 0], [ 0 0 0], [ 0 0 0], [ 0 0 0], [ 0 0 0], [ 0 0 0]] 。我怎么能这样做?

3 个答案:

答案 0 :(得分:5)

您可以使用np.delete()np.where()来获取符合条件的元素:

del_arr = np.delete(arr, np.where(arr == [0, 0, 0]), axis=0)
print del_arr

答案 1 :(得分:0)

试试这个:

import numpy as np

array = np.array([  0   0   0],
[  0   0   0],
[  0   0   0],
[  0   0   0],
[  0   0   0],
[  0   0   0],
[  0   0   0],
[225 224 228],
[163 164 174],
[205 212 229],
[116 130 153],
[ 81 101 132],
[ 34  56  92],
[  2  16  35],
[ 33  44  64],
[ 38  49  71],
[ 63  75  99],
[ 76  88 116],
[ 45  62  95],
[ 29  50  88],
[ 18  40  82],
[  0   0   0],
[  0   0   0],
[  0   0   0],
[  0   0   0],
[  0   0   0],
[  0   0   0],
[  0   0   0])


zeros = np.all(np.equal(a, 0), axis=1)
array[~zeros]

答案 2 :(得分:0)

data[(data[:,1] & data[:, 2] & data[:, 0]).astype(bool)]