python - 从数组中删除小元素

标签 python

只是想知道为什么这个从数组中删除小数字的小函数不起作用。

def chopper(values):
    for i in range(len(values)):
        if np.abs(values[i])<10**(-9):
            values=np.delete(values,i)
    return values

print(chopper(np.array([1,2,10**(-10),-10**(-10),3])))

我希望得到 [1,2,3]。相反,我收到一条错误消息: IndexError:索引 4 超出了大小为 4 的轴 0 的范围

我做错了什么?

谢谢

最佳答案

这是因为每次删除元素时都会减小数组/列表的大小。

如果它是一个 numpy 数组,你可以使用索引:

values = values[np.abs(values) < 1e-9]

关于python - 从数组中删除小元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57390707/

相关文章:

python - python多线程处理打开多个webdrivers时报错

python - 管理此 python 异常 : Can't continue with the next iteration/element? 时出现问题

python - 如何在 python 中找到显示一个列表而不是另一个列表的子列表?

python - django datetimefield 时区

python - 离线pip安装

python - 并行dask for循环比常规循环慢?

python - 如果指定时没有值,则具有不同默认值的 Argparse 可选参数

使用 Numpy 仅出现在浮雕图像上的 Python 错误

Python unittest - 在 0.000 秒内运行 0 次测试

python - urllib.request.Request 超时参数错误