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

4
我正在尝试绘制大量数据(5000万个值),但是出现了MemoryError错误。现在我正在尝试从我的数据集中删除冗余值。在我的情况下,这些值都低于1并且高于-1。需要注意的一件事是,绘图应该与原始图像相同,但没有噪音。有没有比使用循环列表推导式更好的方法呢?
原始图像: enter image description here 编辑:
感谢回复。如果我使用建议的方法:
daty = daty[(-1 > daty) | (daty > 1)]

这会导致以下结果:

在此输入图片描述


1
请分享一些示例数据或 numpy.array 以重现问题。 - Chris
4个回答

11

如果您的数组命名为data

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

3

我在嵌入式数组上使用的示例

import numpy as np

data = np.array([[0, 3], [2, 15], [15, 7], [3, 6]])
e1 = (data[:, 0] < 15)
e2 = (data[:, 1] < 15)

print(data[e1 & e2])
# array([[0, 3], [3, 6]])

2

Numpy让你可以对数组的任意单个维度应用掩码,从而得到未被掩码保护的行(或在您的情况下是数据点)的子集。

最初的回答: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。最初的回答中已经有这个信息了。

将二维数组转换为一维数组。 - Alex Punnen

1
Numpy可以基于布尔数组进行寻址,因此如果您想将不需要的值设置为0,则可以执行以下操作:
badIndices = (myArray > 1) | (myArray < -1)
myArray[badIndices]=0

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