特定のインデックスにnan
を挿入しようとしています。numpy.insert trouble
import numpy
z = numpy.array([1., 1., 0., 0., 0., 2., 3., 4., 5., 6., 0., 7., 8., 9.])
a = z[z!=0]
# Some processing magic happens to a but stays the same shape
b = numpy.argwhere(z == 0).flatten()
c = numpy.insert(a, b, numpy.nan)
:
[1, 1, nan, nan, nan, 2, 3, 4, 5, 6, nan, 7, 8, 9]
が、取得しています:
[1, 1, nan, 2, nan, 3, nan, 4, 5, 6, 7, 8, 9, nan]
はnumpy.insert
でこれを達成するための方法または別の組み込みのコマンドがあり、そうでない場合は、いいクリーンな回避策は何ですか?インデックスのリストは常に昇順になり、重複はありませんが、例のようにギャップがある可能性があります。
EDIT私の質問を編集している間、混乱して申し訳ありません。
私は、最初の例の背後にあるロジック(希望する動作)にはほとんど従っていません。あなたはそれを説明できますか? – NPE
たとえば、 'a 'は' a = z [z!= 0] 'から生成されます。 'a'は何らかの処理を経て変化し、元々ゼロがあったところに' nan'を挿入する必要があります。インデックスは 'b = numpy.argwhere(z == 0)'を使って簡単に取得できます。 – Benjamin
しかし、最後の 'nan'は' 10'の位置にどうして終わりますか? – NPE