NaNで満たされたNumPy行列を作成する 質問する

NaNで満たされたNumPy行列を作成する 質問する

次のコードがあります:

r = numpy.zeros(shape = (width, height, 9))

ゼロで埋められた行列を作成します。代わりに、簡単な方法で swidth x height x 9に初期化する関数または方法があるかどうかを知りたいです。NaN

ベストアンサー1

Numpy では、ベクトル演算にループが必要になることはほとんどありません。初期化されていない配列を作成し、すべてのエントリに一度に割り当てることができます。

>>> a = numpy.empty((3,3,))
>>> a[:] = numpy.nan
>>> a
array([[ NaN,  NaN,  NaN],
       [ NaN,  NaN,  NaN],
       [ NaN,  NaN,  NaN]])

a[:] = numpy.nan私はここで、そしてa.fill(numpy.nan)Blaenk が投稿した代替案の時間を計測しました:

$ python -mtimeit "import numpy as np; a = np.empty((100,100));" "a.fill(np.nan)"
10000 loops, best of 3: 54.3 usec per loop
$ python -mtimeit "import numpy as np; a = np.empty((100,100));" "a[:] = np.nan" 
10000 loops, best of 3: 88.8 usec per loop

タイミングは、ndarray.fill(..)より高速な代替手段としての の優先を示しています。一方、一度にスライス全体に値を割り当てることができる NumPy の便利な実装は気に入っています。コードの意図は非常に明確です。

ndarray.fillは操作をインプレースで実行するので、numpy.empty((3,3,)).fill(numpy.nan)代わりに を返すことに注意してくださいNone

おすすめ記事