一起學數據分析之NumPy(2)——數據類型

dtype是一個特殊的對象,它含有ndarray將一塊內存解釋特定數據類型所需的信息:

<code> import numpy as np
 arr1 = np.array([1, 2, 3], dtype=np.float64)
 arr2 = np.array([1, 2, 3], dtype=np.int32)/<code>
<code> arr1.dtype/<code>
<code> dtype('float64')/<code>
<code> arr2.dtype/<code>
<code> dtype('int32')/<code>
<code> # 使用astype函數顯示轉換ndarray的dtype
 # 整數轉換成浮點數
 arr = np.array([1, 2, 3, 4, 5])
 arr.dtype/<code>
<code> dtype('int32')/<code>
<code> float_arr = arr.astype(np.float64)
 float_arr.dtype/<code>
<code> dtype('float64')/<code>
<code> # 浮點數轉換成整數
 arr = np.array([1.3, 2.3, -5.6, -7.8, 9.4 ])
 arr/<code>
<code> array([ 1.3,  2.3, -5.6, -7.8,  9.4])/<code>
<code> arr.dtype/<code>
<code> dtype('float64')/<code>
<code> arr.astype(np.int32)/<code>
<code> array([ 1,  2, -5, -7,  9])/<code>
<code> arr.dtype
 # 注意:浮點數轉換成整數,會截斷小數部分/<code>
<code> dtype('float64')/<code>
<code> # 如果字符串數組元素全部都是數字,也可以用astype將其轉換為數值表示: 

 numeric_strings = np.array(['1.2', '4.5', '4', '6.4', '9'], dtype=np.string_)/<code>
<code> numeric_strings.astype(np.float64)/<code>
<code> array([1.2, 4.5, 4. , 6.4, 9. ])/<code>
<code> # 你也可以偷懶直接寫成這樣
 numeric_stings.astype(float)/<code>
<code> array([1.2, 4.5, 4. , 6.4, 9. ])/<code>
<code> # dtype還可以直接引用賦值,舉個例子:
 int_array = np.arange(10)
 calibers = np.array([.22, .270, .357, .380, .44, .50], dtype=np.float64)
 # 我想把int_array的dtype變成跟calibers一樣可以直接賦值
 int_array.astype(calibers.dtype)/<code>
<code> array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])/<code>
<code> # 你也可以用簡潔的類型代碼來表示dtype,u指unit,8指8字節
 empty_unit32 = np.empty(8, dtype='u8')
 empty_unit32/<code>
<code> array([   0,    0,    0,    0,    0, 1104,    0,    0], dtype=uint64)/<code>
<code> # 但是注意,調用astype會創建一個新的數組(拷貝),及時新數組跟老數組的dtype相同也是如此。
 # 數據類型對於大數據集的存儲和計算尤為重要,但是通常來說,你只要把它當成還是普通的Python對象就行,大致類型無非就是浮點、複數、整數、布爾、字符串等。/<code>

dtype 是NumPy如此強大和靈活的原因之一。數值型dtype的命名方式相同:一個類型名(float,int等),後面跟一個用於表示各元素長的數字。 NumPy的數據類型這裡不做更多的說明,有興趣的讀者可以自己查詢。


分享到:


相關文章: