質問
配列を使用した操作内の別の置換値として、または配列内で検索して別の値に置換する方法
例:
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]])
NaNを0に置き換えることができる場所。 回答ありがとうございます
解決
これを行うことができます:
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)
は、 x
が NaN
である場合、 True
であるブール配列を返します。
x [boolean_array] = 0
は、ファンシーインデックスを使用して割り当てますブール配列が True
である場合は常に値0。
ファンシーインデックス作成などの優れた紹介については、 the 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