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

例如:

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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top