0

Python で 1D numpy 配列を読み取り、他の 2 つの numpy 配列を生成したいと思います。

  • 「nan」値がない場合、最初の 1 つは入力です。それ以外の場合は、「nan」値を「0」に置き換えて入力します
  • 2 番目はマスク、1='入力値は 'nan'' ではなく、'0'='入力値は nan'' です。

例えば:

a = numpy.array([1,2,numpy.nan,4])

与えるだろう

[1,2,0,4]
[1,1,0,1]

Pythonでこれを行う最も効率的な方法は何ですか?

ありがとう

4

3 に答える 3

1

に置き換えるnan0は、次を使用しますnumpy.nan_to_num

>>> a = numpy.array([1,2,numpy.nan,4])
>>> numpy.nan_to_num(a)
array([ 1.,  2.,  0.,  4.])

numpy.isnanに変換するために使用nanTrue、非 nan 数値をに変換しFalseます。次に、それらを から引きます1

>>> numpy.isnan(a)
array([False, False,  True, False], dtype=bool)
>>> 1 - numpy.isnan(a)
array([ 1.,  1.,  0.,  1.])
于 2013-10-24T13:21:39.780 に答える
0

最初のもの:

numpy.nan_to_num(a)

二つ目:

numpy.invert(numpy.isnan(a)).astype(int)
于 2013-10-24T13:21:16.193 に答える