python - 在 numpy 数组中更改值

标签 python arrays numpy enumerate

所以我有一个 2D numpy 数组 (256,256),包含 0 到 10 之间的值,它本质上是一个图像。我需要删除 0 值并将它们设置为 NaN,以便我可以使用特定库 (APLpy) 绘制数组。但是,每当我尝试更改所有 0 值时,其他一些值都会发生变化,在某些情况下会更改为原始值的 100 倍(不知道为什么)。

我使用的代码是:

for index, value in np.ndenumerate(tex_data):
    if value == 0:
        tex_data[index] = 'NaN'

其中 tex_data 是我需要从中删除零的数据数组。不幸的是,我不能只对不需要的值使用掩码,因为据我所知,APLpy 不会使用掩码数组。

是否可以在不更改数组中其他值的情况下将 0 值设置为 NaN?

最佳答案

使用花式索引。像这样:

tex_data[tex_data==0] = np.nan

我不知道为什么您的原始代码会失败。它看起来对我来说是正确的,虽然非常低效。

关于python - 在 numpy 数组中更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41881452/

相关文章:

image - 如何根据某个类计算图像的梯度?

python - 运行时警告 : invalid value encountered in double_scalars related to np. sqrt

python - Python MySQLdb 游标上的提交是否会影响另一个游标中正在进行的事务?

javascript - Jquery 或 PHP 按日期字段对对象数组进行分组

java - 修复数组索引越界异常

c - Array - 在 C 中按模数组排序

python - [ :] in python 是什么意思

python - 覆盖 Django 模块类方法

Python 3 wsgi - json 响应

python - 在 Python 中即时在磁盘上构造稀疏矩阵