Python:如何用NaN替换数组中的值?

时间:2018-01-30 15:39:08

标签: python numpy

我有一个矩阵

f=numpy.array([[1,2,3],[2,3,4],[7,8,9]])
>>> f
array([[1, 2, 3],
       [2, 3, 4],
       [7, 8, 9]])

我想用NaN替换第一行中的值。我该怎么做?我试过了

f[0:1]=numpy.nan(3)

但它不起作用,但

f[0:1]=numpy.zeros(3)

工作得很好。我该怎么办呢?

2 个答案:

答案 0 :(得分:1)

整数类型不允许nan中的numpy

这样可行:

import numpy as np

f = np.array([[1,2,3],
              [2,3,4],
              [7,8,9]], dtype=float)

f[0, :] = np.nan

# [[ nan  nan  nan]
#  [  2.   3.   4.]
#  [  7.   8.   9.]]

答案 1 :(得分:1)

执行此操作:

import numpy

f = numpy.array([[1,2,3],[2,3,4],[7,8,9]])
f = f.astype(float)
#Put nan in the first row of the matrix f
f[0,] = numpy.nan

<强>结果

print(f)

array([[nan, nan, nan],
       [ 2.,  3.,  4.],
       [ 7.,  8.,  9.]])

更多详情

键入时:

numpy.nan(3)

你可能得到了这个:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'float' object is not callable

这是因为调用numpy.nan时没有任何参数。