从小于1的numpy数组中删除元素

时间:2019-04-23 07:19:26

标签: python numpy matplotlib

我正在尝试绘制大数据(5000万个值),但得到MemoryError。现在,我试图从冗余值中清除数据集。就我而言,这些都是低于1和高于-1的值。要记住的一件事是,该图应该看起来与原始图相同,但没有杂音。有没有比使用loopslist comprehensions更好的方法了?

原始图:

enter image description here

编辑:

感谢您的答复。如果我使用建议的方法:

daty = daty[(-1 > daty) | (daty > 1)]

结果如下:

enter image description here

3 个答案:

答案 0 :(得分:2)

如果您的数组名为data

clipped_data = data[(-1 > data) | (data > 1)]

答案 1 :(得分:0)

Numpy可以基于布尔数组进行寻址,因此,如果要将不需要的值设置为0,则可以执行以下操作:

badIndices = (myArray > 1) | (myArray < -1)
myArray[badIndices]=0

答案 2 :(得分:0)

Numpy允许您将掩码应用于数组的任何单个维度,从而产生未掩码行(或您的情况下的数据点)的子集。

data = np.array([1.5, 0.2, -5, -0.5])
mask = np.abs(data) > 1
data = data[mask]
print(data) # output: [1.5, -5]

请注意,-5现在位于过滤器之后的位置1。