您好,登錄后才能下訂單哦!
這篇文章主要介紹了NumPy ndarray的數據類型怎么使用的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇NumPy ndarray的數據類型怎么使用文章都會有所收獲,下面我們一起來看看吧。
ndarray是一個特殊的numpy數據類型,他是一個多維數組。
數據類型,即 dtype ,也是一個特殊的對象, 它包含了ndarray需要為某一種類型數據所申明的內存塊信息(也成為了元數據,即表示數據的數據)
dtype是NumPy能夠與琪他系統數據靈活交互的原因。通常,其他系統提供一個硬盤或內存與數據的對應關系,使得利用C或Fortran等底層語言讀寫數據變得十分方便。
名稱 | 描述 |
---|---|
bool_ | 布爾型數據類型(True 或者 False) |
int_ | 默認的整數類型(類似于 C 語言中的 long,int32 或 int64) |
intc | 與 C 的 int 類型一樣,一般是 int32 或 int 64 |
intp | 用于索引的整數類型(類似于 C 的 ssize_t,一般情況下仍然是 int32 或 int64) |
int8 | 字節(-128 to 127) |
int16 | 整數(-32768 to 32767) |
int32 | 整數(-2147483648 to 2147483647) |
int64 | 整數(-9223372036854775808 to 9223372036854775807) |
uint8 | 無符號整數(0 to 255) |
uint16 | 無符號整數(0 to 65535) |
uint32 | 無符號整數(0 to 4294967295) |
uint64 | 無符號整數(0 to 18446744073709551615) |
float_ | float64 類型的簡寫 |
float16 | 半精度浮點數,包括:1 個符號位,5 個指數位,10 個尾數位 |
float32 | 單精度浮點數,包括:1 個符號位,8 個指數位,23 個尾數位 |
float64 | 雙精度浮點數,包括:1 個符號位,11 個指數位,52 個尾數位 |
complex_ | complex128 類型的簡寫,即 128 位復數 |
complex64 | 復數,表示雙 32 位浮點數(實數部分和虛數部分) |
complex128 | 復數,表示雙 64 位浮點數(實數部分和虛數部分) |
使用astype方法來顯式的轉換數組的數據類型
arr = np.array([1,2,3,4,5])
print(arr.dtype)
print(arr)
float_arr = arr.astype('float32')#也可以寫作 arr.astype(np.float32)
print(float_arr.dtype)
print(float_arr)
int32 [1 2 3 4 5] float32 [1. 2. 3. 4. 5.]
注意:將內容為數字的字符串數組轉為數字是可以的,當內容是浮點型數字的時候只能轉成 float,不能 int,只有是整數的時候才可以轉成int
用其他數組的dtype來轉換數據類型:
int_arr = np.arange(10)
calibers = np.array([.22, .270, .357], dtype=np.float64)
print(calibers)
arr_last = int_arr.astype(calibers.dtype)
print(arr_last.dtype)
print(arr_last)
[0.22 0.27 0.357] float64 [0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
補充:Python3:numpy的簡單使用(ndarray的基本屬性以及基本生成數組的方法)
由于本人學習需要,所以開始學習numpy,這個科學計算工具,本文用于復習當前所學習的內容(當前使用numpy的版本為:1.17.4)
1.ndarray的基本的屬性
2.生成數組的方法(主要測試生成0和生成1的方法:ones和zeros方法)
# 測試當前Numpy中的narray中的屬性
# 使用的numpy的版本為:1.17.4
import numpy as np
default_array = [[1, 2, 3, 4, 5, 6],
[1, 2, 3, 4, 5, 6]]
np_array = np.array(default_array)
print("當前存儲后的數據的dtype類型為:{}".format(np_array.dtype)) # int32
print("查看這個對象的實際類型:{}".format(type(np_array))) #
print("查看這個對象的形狀:{}".format(np_array.shape)) # (2,6)
print("當前這個對象的字節長度:{}".format(np_array.itemsize)) # 4
print("當前這個對象的長度(使用python的len方法):{}".format(len(np_array))) # 2 只迭代了一組數據外層的二維數據
print("當前這個對象的長度(使用自己的size方法):{}".format(np_array.size)) # 獲取了所有的數據的數量
print(np.array([[1, 2, 3], [1, 2, 3]]).dtype)
print(np.array([1.2, 2.2, 3.2]).dtype)
# 可以看出當前默認使用的類型為int32
# 默認使用的浮點類型為:float64
# 修改和設定當前的使用的初始化類型
# print(np.array([[1.1,1.2,1.3]],dtype="int32").dtype)
print(np.array([[1.1,1.2,1.3]],dtype=np.int32).dtype)
1.創建了二維數據的時候使用原生的python的len方法獲取的長度是外層的長度,并不是二維數組實際內容的長度!
2.通過np.array(數組)將原來的python中的數組轉換為ndarray類型的數據
3.每一個ndarray中都會有一個數據類型使用dtype表示,默認使用的整數類型為int32,浮點類型為float64
4.通過ndarray.size獲取當前ndarray中的元素的個數
5.通過ndarray.shap獲取當前的ndarray的形狀
6.使用np.array()創建ndarray的時候可以指定當前的ndarray的dtype,其形式可以是字符也可以是np.類型
# 使用numpy中的生成的數組數據的方法
import numpy as np
# 生成1的操作
np_array = np.zeros([2, 2])
print("當前生成的數據為:{}".format(np_array))
print("輸出當前生成的數據的類型為:{}".format(np_array.dtype))
# 說明當前默認產生的數據數據的類型為float64
# 現在改變當前的dtype,直接將當前的dtype的數據類型設置為int32
np_array.dtype = np.int32
print("當前生成的數據為:{}".format(np_array))
print("輸出當前生成的數據的類型為:{}".format(np_array.dtype))
# 生成1的數據
np_array_ones = np.ones([2, 2], dtype=np.int32)
print(np_array_ones)
# 創建一個未初始化的數據,默認未初始化
x = np.empty([3, 2], dtype=int)
print(x)
1.使用當前的np.zeros(shape)和np.ones(shape)方法生成全是0或者全是1的指定形狀的數組
2.通過np.empty(shape)生成空的數組
3.可以通過ndarray.dtype=dtype方式改變當前的ndarray的類型
# 從已有的數組中創建數據
import numpy as np
default_array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
default_tuple = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print(type(default_tuple))
copy_array = np.asarray(default_array) # 用于淺拷貝
copy_tuple = np.asarray(default_tuple)
print("asarray數組后的數據:{}".format(copy_array))
print("asarray元組后的數據:{}".format(copy_tuple))
deep_copy_array = np.copy(default_array)
print("copy數組后的數據:{}".format(deep_copy_array))
1.這里使用np.asarray()方法生成的數組與原來的數組有關聯,是淺拷貝
2.這里的np.copy()方法生成的另外一份備份數據,是深拷貝
# 通過固定范圍生成數組,使用arange方式生成0 到 9之間的數據,默認生成的數據為當前的為范圍的值,這里的步長默認就是1,結果中不包含10,這里是按照指定的步長進行迭代
range_array = np.arange(0, 10, dtype=np.int32)
print("range_array:{}".format(range_array))
# 通過隨機方式生成數組
random_array = np.random.random((2, 2))
print("使用隨機方式生成數組:{}".format(random_array)) # 默認生成的數據為0到1之間的數據
# 2 生成隨機的整數
random_array_int = np.random.randint(1, 10, (2, 2))
print("生成隨機整數:{}".format(random_array_int))
# 在指定范圍中生成15 個 1到 10之間的數,這是一個隨機的數據,是等距離的,當要求的數據超過當前的范圍的數據的時候默認就會隨機生成一些數據
listspace_array = np.linspace(1, 10, 15, dtype=np.int32) # 就是按照一定的等分進行劃分為指定個需要的數據,這里的結果中包含10,相當于當前的等差數列一樣
print("listspace_array:{}".format(listspace_array))
1.當前的random方法就是隨機生成指定區間的數據,可以指定類型
2.range就是相當于當前的python中的range方法,可以指定步長,是一個[a,b)這中數據
3.linspace用于在指定的范圍中按照指定的方式生成數組,這個是等差數列,如果當前需要的數據大于這個范圍就會出現隨機生成的情況
# 生成一個等比的數列,這里面的2 表示生成的樣本的個數為2 ,起始數據為1,結束數據為4,表示最小為3的1次方到當前的3的4次方
equal_ratio_array = np.logspace(1, 4, 2, dtype=np.int32) # 這里的默認的底數為10 表示當前最小為10的一次方,最大為當前的10的4次方
print("當前的等比數列的數據為:{}".format(equal_ratio_array))
當前的等比數列的數據為:[ 10 10000]
關于“NumPy ndarray的數據類型怎么使用”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“NumPy ndarray的數據類型怎么使用”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。