作为具有数组的操作中的另一个的替换值,或者如何在数组中搜索并将值替换为另一个
例如:
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。 谢谢你的回复
答案 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)
返回一个布尔数组,True
为x
NaN
。
x[ 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.where和numpy.isnan函数创建新数组b
:
b = np.where(np.isnan(a), 0, a)
或使用就地函数直接修改a
数组:
np.place(a, np.isnan(a), 0) # returns None