在numpy数组

时间:2017-01-26 19:31:02

标签: 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而不更改数组中的其他值吗?

2 个答案:

答案 0 :(得分:4)

使用花式索引。像这样:

tex_data[tex_data==0] = np.nan

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

答案 1 :(得分:0)

使用浮动规则,

tex_data/tex_data*tex_data

也可以在这里工作。