numpy.ndarray.astype#

方法

ndarray.astype(dtype, order='K', casting='unsafe', subok=True, copy=True)#

將陣列複製並轉換為指定型別。

引數:
dtypestr 或 dtype

要轉換到的型別程式碼或資料型別。

order{‘C’, ‘F’, ‘A’, ‘K’}, optional

控制結果的記憶體佈局順序。‘C’ 表示 C 順序,‘F’ 表示 Fortran 順序,‘A’ 表示如果所有陣列都是 Fortran 連續的,則為 ‘F’ 順序,否則為 ‘C’ 順序,而 ‘K’ 表示儘可能接近陣列元素在記憶體中出現的順序。預設為 ‘K’。

casting{‘no’, ‘equiv’, ‘safe’, ‘same_kind’, ‘same_value’, ‘unsafe’}, optional

控制可以進行哪些型別的資料轉換。預設為 ‘unsafe’ 以保持向後相容。

  • ‘no’ 表示資料型別不得進行任何轉換。

  • ‘equiv’ 表示只允許進行位元組順序更改。

  • ‘safe’ 表示只允許進行可以保留值的轉換。

  • ‘same_kind’ 表示只允許安全的轉換或同一類別的轉換,例如從 float64 到 float32。

  • ‘unsafe’ 表示可以進行任何資料轉換。

  • ‘same_value’ 表示可以進行任何資料轉換,但值必須保持不變,包括浮點數的舍入或整數的溢位。

2.4 版本新增:支援 'same_value'

subokbool, optional

如果為 True,則子類將被保留(預設),否則返回的陣列將被強制為基類陣列。

copybool, optional

預設情況下,astype 始終返回一個新分配的陣列。如果此設定為 False,並且滿足 dtypeordersubok 的要求,則返回輸入陣列而不是副本。

返回:
arr_tndarray

除非 copy 為 False 且滿足返回輸入陣列的其他條件(請參閱 copy 輸入引數的說明),否則 arr_t 是一個與輸入陣列形狀相同的新陣列,其 dtype 和 order 由 dtypeorder 指定。

引發:
ComplexWarning

當從複數型別轉換為浮點數或整數時。為避免此情況,應使用 a.real.astype(t)

ValueError

當使用 'same_value' 進行轉換且值發生更改或會發生溢位時。

示例

>>> import numpy as np
>>> x = np.array([1, 2, 2.5])
>>> x
array([1. ,  2. ,  2.5])
>>> x.astype(np.int_)
array([1, 2, 2])
>>> x.astype(np.int_, casting="same_value")
Traceback (most recent call last):
...
ValueError: could not cast 'same_value' double to long
>>> x[:2].astype(np.int_, casting="same_value")
array([1, 2])