删除数组的特定值:Python

时间:2018-11-22 09:20:43

标签: python arrays numpy indexing

我有一个形状为(1179648, 909)的数组。 问题是某些行仅用0填充。我正在检查以下内容:

for i in range(spectra1Only.shape[0]):
    for j in range(spectra1Only.shape[1]):
        if spectra1Only[i,j] == 0:

我现在想删除[i]的整个行,如果出现任何0只会得到较少量的仅所需数据。

我的问题是:这样做的最佳方法是什么? RemoveDelnumpy.delete?还是其他方法?

1 个答案:

答案 0 :(得分:1)

您可以对np.anyaxis=1使用布尔索引:

spectra1Only = spectra1Only[~(spectra1Only == 0).any(1)]

这是一个示范:

A = np.random.randint(0, 9, (5, 5))

print(A)

[[5 0 3 3 7]
 [3 5 2 4 7]
 [6 8 8 1 6]
 [7 7 8 1 5]
 [8 4 3 0 3]]

print(A[~(A == 0).any(1)])

[[3 5 2 4 7]
 [6 8 8 1 6]
 [7 7 8 1 5]]