ndarray
in python with dtype
of _float64
_を持っています。配列を配列に変換したいです整数。どうすればいいですか?
int()
は、スカラーに変換できないと書かれているため、機能しません。実際のバイトは変更されていないため、dtype
フィールド自体の変更は明らかに機能しません。 Googleやドキュメントで何かを見つけられないようです-これを行う最善の方法は何ですか?
つかいます .astype
。
>>> a = numpy.array([1, 2, 3, 4], dtype=numpy.float64)
>>> a
array([ 1., 2., 3., 4.])
>>> a.astype(numpy.int64)
array([1, 2, 3, 4])
その他のオプションについては documentation をご覧ください。
配列のインプレース変換に関する非常に有用な議論もあります NumPy配列のインプレース型変換 。配列のコピー(whatastype()
の実行)が心配な場合は、間違いなくリンクをチェックしてください。
astype
はおそらく「最良の」オプションですが、整数配列に変換する方法は他にもいくつかあります。次の例では、このarr
を使用しています。
>>> import numpy as np
>>> arr = np.array([1,2,3,4], dtype=float)
>>> arr
array([ 1., 2., 3., 4.])
int*
関数>>> np.int64(arr)
array([1, 2, 3, 4])
>>> np.int_(arr)
array([1, 2, 3, 4])
*array
関数自体:>>> np.array(arr, dtype=int)
array([1, 2, 3, 4])
>>> np.asarray(arr, dtype=int)
array([1, 2, 3, 4])
>>> np.asanyarray(arr, dtype=int)
array([1, 2, 3, 4])
astype
メソッド(既に述べたが、完全を期すため):>>> arr.astype(int)
array([1, 2, 3, 4])
int
をdtypeとしてastype
またはarray
に渡すと、デフォルトはプラットフォームに応じたデフォルトの整数型になります。たとえば、Windowsではint32
になります。64ビットPythonの場合はint64
です。特定の整数型が必要で、プラットフォームの曖昧さを回避する場合は"np.int32
やnp.int64
などの対応するNumPy型を使用する必要があります。