0

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'>
4

1 に答える 1