python - 有效地从 np 数组中删除零

标签 python arrays numpy

目前我正在使用这个方法:

data = np.array([[0, 0, 0, 0, 1, 2, 3, 4, 5, 0, 6, 0, 0], [0, 0, 0, 0, 1, 2,3, 4, 5, 0, 6, 0, 0]])
index = 0
idx = []
for img in range(len(data)):
    img_raw = np.any(data[img])
    if img_raw == 0.0:
        idx.append(index)
    index+=1
data = np.delete(data, idx, axis=0)

有人知道更好的方法吗?

最佳答案

无论 data 是什么,Daniel 都会回答一维数组,这在您的情况下似乎已经足够了。如果您的 data 数组是二维的,事情就会变得有点复杂,因为您不能在不改变数组维度的情况下删除 0。在这种情况下,您可以使用 mask-arrays 从您的考虑中删除不需要的值,例如

import numpy as np
ma_data = np.ma.masked_equal(data,0)
print(ma_data)

任何计算,例如均值、标准差等,都不要考虑屏蔽值。

关于python - 有效地从 np 数组中删除零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46383987/

相关文章:

python - OpenCV 3.2.0 windows,OpenCL 在 C++ 中显示设备,但在 python 中不显示

ruby-on-rails - 序列化时无法将空数组保存到数据库

ios - 使用数组变量 SWIFT 检查文本框

python - 如何在Python中构造对称矩阵

python - 如何从多处理池映射返回 numpy 数组?

python - Matplotlib:用 A、B、C 注释图中的子图

python - 如何通过 executemany() 语句转换 pandas 数据框以进行插入?

python .count : Can't find correct syntax to count\n

c - 将数组元素添加到结构中的数组

python - 绘制所有边都清晰可见的网络图