查找并替换numpy数组上的浮点数

2024-04-26 03:57:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些大的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]

如果要传递一个值列表,使函数的这一部分更通用,我可以对这些进行泛化吗?你知道吗


Tags: 函数innumpy元素列表forifnp
2条回答

IIUC,你可以:

import numpy as np

z_ = np.arange(0, 8).reshape((4, 2))

z_[z_ == 1] = 150
z_[z_ == 2] = 120
z_[z_ == 3] = 110

print(z_)

输出

[[  0 150]
 [120 110]
 [  4   5]
 [  6   7]]

boolean index arrays。尽管Quang Hoang's answer似乎更合适。你知道吗

您可以使用np.select

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

相关问题 更多 >