题
作为具有数组的操作中的另一个的替换值,或者如何在数组中搜索并将值替换为另一个
例如:
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。 谢谢你的回复
解决方案
你可以这样做:
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
使用花式索引来分配如果布尔数组是 True
,则值为0。
有关精美索引的精彩介绍等等,另请参阅 numpybook 。
其他提示
这些天有特殊的功能:
a = numpy.nan_to_num(a)
以下是问题中的示例数组:
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
不隶属于 StackOverflow