一、astype 函數的初探
astype 是 Python 中的一種函數,用於將 NumPy 數組中的數據類型轉換為特定的數據類型。例如,我們可以在 numpy 數組中將整數轉換為浮點數,字符串轉換為整數等。
astype 函數定義如下:
numpy.ndarray.astype(dtype, order='K', casting='unsafe', subok=True, copy=True)
astype 函數的參數很多,下面我們逐一解讀。
二、astype 函數的參數
1. dtype
dtype 是一個必需的參數,用於指定轉換後的數組數據類型。可以用Python 的 int、float、bool、complex、string 等類型表示數據類型,也可以用 NumPy 中的 dtype 對象來表示。下面是一些示例:
import numpy as np arr = np.array([1, 2, 3, 4]) arr = arr.astype(float) # 將數組類型轉換為浮點數類型 print(arr) # [1. 2. 3. 4.] arr = np.array(['1', '2', '3', '4']) arr = arr.astype(int) # 將字符串類型轉換為整數類型 print(arr) # [1 2 3 4] arr = np.array([1, 2, 3, 4]) arr = arr.astype(np.complex) # 將數組類型轉換為複數類型 print(arr) # [1.+0.j 2.+0.j 3.+0.j 4.+0.j]
2. order
order 指定新數組的內存布局方式。如果參數值為“C”或“c”,新數組的行是依次存儲的(即“按行存儲”),如果參數值為”F”或”f”,新數組的列是依次存儲的(即“按列存儲”)。默認值為“K”或“k”,表示按盡量少的轉換來存儲數組。
3. casting
casting 參數用於指定是否允許數據類型轉換。如果設置成“safe”,則只允許安全的轉換,如果轉換會造成數據精度的損失,則轉換失敗。如果轉換對數據沒有影響,轉換成功。如果設置成“unsafe”,則允許任何類型的轉換,包括精度的損失。默認值為“unsafe”。
4. subok
subok 參數用於指定是否返回一個與被轉換數組相同的子類型。如果該值為 True,則返回子類型,否則返回基類類型。默認值為 True。
5. copy
copy 參數用於指定是否返回副本。如果該值為 True,則返回副本,否則返回原數組。默認值為 True。
三、astype 函數的使用技巧
1. 典型用例:將字符串類型數組轉換為整數類型數組
由於輸入的數據有可能帶有非數字字符,因此我們需要先將數據中的非數字字符過濾掉,然後再將字符串轉換為整數類型。
import numpy as np arr = np.array(['1', '2', '3', '4a']) arr = np.char.replace(arr, 'a', '') arr = arr.astype(int) print(arr) # [1 2 3 4]
2. 數組類型轉換問題
在進行數組類型轉換時,有時會出現精度丟失的問題。例如將浮點數轉換為整數時,會捨去小數部分,從而可能會丟失一些精度。我們可以通過numpy.astype 的“safe”模式來避免這個問題。
import numpy as np arr = np.array([1.2, 2.6, 3.9, 4.7]) arr = arr.astype(int, casting='safe') print(arr) # [1 2 3 4]
3. 按需返回特定類型
astype 函數可以返回不同的特定類型。例如,我們可以將整數數組轉換為布爾數組,使其只包含 1 和 0。
import numpy as np arr = np.array([1, 0, 1, 0]) arr = arr.astype(bool) print(arr) # [ True False True False]
此外,我們還可以將數字轉換為字符類型字符串。
import numpy as np arr = np.array([1, 2, 3, 4]) arr = arr.astype(str) print(arr) # ['1' '2' '3' '4']
結束語
通過上述解讀,我們可以看出,astype 函數是 Python 中一種強大且實用的類型轉換函數,它可以將任意形式的數組轉換為各種數據類型的數組。同時,astype 函數也提供了許多參數,可以根據具體情況選擇不同的參數解決實際問題。
原創文章,作者:ICAIN,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/360879.html