web-dev-qa-db-ja.com

ndarrayをfloat64から整数に変換します

ndarray in python with dtype of _float64_を持っています。配列を配列に変換したいです整数。どうすればいいですか?

int()は、スカラーに変換できないと書かれているため、機能しません。実際のバイトは変更されていないため、dtypeフィールド自体の変更は明らかに機能しません。 Googleやドキュメントで何かを見つけられないようです-これを行う最善の方法は何ですか?

43
robintw

つかいます .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 をご覧ください。

62
kennytm

配列のインプレース変換に関する非常に有用な議論もあります NumPy配列のインプレース型変換 。配列のコピー(whatastype()の実行)が心配な場合は、間違いなくリンクをチェックしてください。

6
benjaminmgross

astypeはおそらく「最良の」オプションですが、整数配列に変換する方法は他にもいくつかあります。次の例では、このarrを使用しています。

>>> import numpy as np
>>> arr = np.array([1,2,3,4], dtype=float)
>>> arr
array([ 1.,  2.,  3.,  4.])

NumPyのint*関数

>>> np.int64(arr)
array([1, 2, 3, 4])

>>> np.int_(arr)
array([1, 2, 3, 4])

NumPy *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.int32np.int64などの対応するNumPy型を使用する必要があります。

6
MSeifert