首页 > 解决方案 > 查找和替换 numpy 数组上的浮点数

问题描述

我有一些具有特定值的大型 numpy 列表(数千个元素),例如其中一个值必须是其中之一:1.0、2.0、3.0、4.0、5.0。

我需要找到并替换其中的一些值,而我想要以最小的计算成本来做到这一点。有没有办法在不循环每个元素的情况下做到这一点?

这是我到目前为止得到的:

for x, y in np.ndindex(z_.shape):
    z_[x,y] = 150.0 if z_[x,y] == 1.0 else z_[x,y]
    z_[x,y] = 120.0 if z_[x,y] == 2.0 else z_[x,y]
    z_[x,y] = 110.0 if z_[x,y] == 3.0 else z_[x,y]

如果传递一个值列表,我可以概括这些,使这部分函数更通用吗?

标签: pythonnumpyreplace

解决方案


您可以使用np.select

z_ = np.select( (z_==1,z_==2, z_==3),
                (150, 120, 110),
                default=z_)

推荐阅读