替换数组中的值

时间:2009-11-25 21:46:51

标签: python numpy

作为具有数组的操作中的另一个的替换值,或者如何在数组中搜索并将值替换为另一个

例如:

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

它可以用0代替NaN。 谢谢你的回复

3 个答案:

答案 0 :(得分:31)

你可以这样做:

import numpy as np
x=np.array([[np.NaN, 1., 1., 1., 1., 1., 1.],[1., np.NaN, 1., 1., 1., 1., 1.],[1., 1., np.NaN, 1., 1., 1., 1.], [1., 1., 1., np.NaN, 1., 1., 1.], [1., 1., 1., 1., np.NaN, 1., 1.],[1., 1., 1., 1., 1., np.NaN, 1.], [1., 1., 1., 1., 1., 1., np.NaN]])
x[np.isnan(x)]=0

np.isnan(x)返回一个布尔数组,Truex NaNx[ boolean_array ] = 0使用fancy indexing在布尔数组为True的任何地方赋值0.

有关精美索引的精彩介绍等等,另请参阅the numpybook

答案 1 :(得分:14)

这些天有特殊的功能:

a = numpy.nan_to_num(a)

答案 2 :(得分:0)

以下是问题中的示例数组:

import numpy as np
a = np.where(np.eye(7), np.nan, 1)

您可以使用numpy.wherenumpy.isnan函数创建新数组b

b = np.where(np.isnan(a), 0, a)

或使用就地函数直接修改a数组:

np.place(a, np.isnan(a), 0)  # returns None