阵列的零值转换为楠值 [英] zero values of an array to be converted to nan values

查看:152
本文介绍了阵列的零值转换为楠值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数组1200 * 1200。它的一些值为零。欲零值转换为numpy.nan值。这是我的解决方案:

I have an array 1200*1200. Some of its values are zero. I want to convert the zero values to numpy.nan values. This is my solution:

import numpy
for i in range(1200):
    for j in range(1200):
        if data_a[i, j] == 0:
            data_a[i, j] = numpy.nan

但我得到这个错误:会将Data_A [I,J] = numpy.nan
ValueError错误:不能转换浮动NaN的成整数

我不明白的错误。任何替代方案或解决方案?

But I got this error: data_a[i,j] = numpy.nan ValueError: cannot convert float NaN to integer I don't understand the error. Any alternatives or solutions?

推荐答案

这是错误消息,是因为你的阵列是用于存储整数:

That error message is because your array is for storing integers:

>>> import numpy as np
>>> a = np.arange(3)
>>> a
array([0, 1, 2])
>>> a.dtype
dtype('int32')
>>> a[0] = np.nan
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: cannot convert float NaN to integer

如果你的阵列是花车,虽然,它会工作。你可以这样做没有循环,也:

If your array is for floats, though, it'll work. You can do it without loops, too:

>>> a = np.arange(3.0)
>>> a
array([ 0.,  1.,  2.])
>>> a[a==0]
array([ 0.])
>>> a[a==0] = np.nan
>>> a
array([ nan,   1.,   2.])

如果您想将数组转换为一个float数组,你可以使用 astype

If you want to convert your array to a float array, you could use astype:

>>> a = a.astype(float)
>>> a
array([ 0.,  1.,  2.])
>>> a.dtype
dtype('float64')

这篇关于阵列的零值转换为楠值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆