如果满足值的条件,则将值转换为numpy数组中的np.nan

时间:2018-02-14 22:56:12

标签: python arrays python-3.x numpy

我正在使用数据集,其中不存在的值显示为负数。我想将这些值转换为np.nan值,但我无法弄清楚如何。条件是(array < 0)

数组会发生什么的一个例子是:

import numpy as np

array = np.array([[-1,  1, -1,  1],
                  [ 1, -1, -1,  1],
                  [ 1, -1, -1, -1]])

然后转换为:

np.array([[np.nan,      1, np.nan,      1],
          [     1, np.nan, np.nan,      1],
          [     1, np.nan, np.nan, np.nan]])

干杯

1 个答案:

答案 0 :(得分:2)

np.nan是一个浮点数,因此您需要在执行boolean masking之前将array转换为浮点数。

isinstance(np.nan, float)  # True

array = array.astype(float)
array[array < 0] = np.nan
array

输出

array([[nan,  1., nan,  1.],
       [ 1., nan, nan,  1.],
       [ 1., nan, nan, nan]])