numpy 配列からのスカラー値でいくつかの簡単な計算を行っています。ドキュメントにあるように、
配列スカラーを使用する主な利点は、配列タイプが保持されることです (Python では、int16 など、一致するスカラー タイプが利用できない場合があります)...
しかし、これよりも既存の配列スカラーに新しい値を代入するより良い (より高速で簡潔な) 方法はありますか?
>>> x = np.array(2.0, dtype='float32')
これは機能しますが、それほど便利ではありません(私は他の算術演算を行っており、型全体を保持したいと考えています)。
これは明らかな理由で機能しません:
>>> x = np.array(1.0, dtype='float32')
>>> print(x, type(x))
1.0 <class 'numpy.ndarray'>
>>> x = 2.0
>>> print(x, type(x))
2.0 <class 'float'>
これもありません:
>>> x = np.array(1.0, dtype='float32')
>>> x[] = 2.0
File "<ipython-input-319-7f36071ff81d>", line 2
x[] = 2.0
^
SyntaxError: invalid syntax
これも:
>>> x = np.array(1.0, dtype='float32')
>>> x[:] = 2.0
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-24-62cd4ca238ce> in <module>()
1 x = np.array(1.0, dtype='float32')
----> 2 x[:] = 2.0
IndexError: too many indices for array
アップデート:
以下のコメントに基づいて(ありがとう)、実際には配列スカラーを使用していないことに気付きました。 xゼロ次元配列です。
配列スカラーを作成する方法は次のとおりです。
>>> a = np.array((1.0, 2.0, 3.0), dtype='float32')
>>> x = a[0]
>>> print(x, type(x))
1.0 <class 'numpy.float32'>
または単に:
>>> x = np.float32(1.0)
>>> print(x, type(x))
1.0 <class 'numpy.float32'>