質問

配列を使用した操作内の別の置換値として、または配列内で検索して別の値に置換する方法

例:

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top