numpy學習3:物件屬性和基本資料型別
阿新 • • 發佈:2018-12-11
一、ndarray物件屬性
ndim 陣列軸(維度)的個數,軸的個數被稱作秩
shape 陣列的維度, 例如一個2排3列的矩陣,它的shape屬性將是(2,3),這個元組的長度顯然是秩,即維度或者ndim屬性
size 陣列元素的總個數,等於shape屬性中元組元素的乘積。
dtype一個用來描述陣列中元素型別的物件,可以通過創造或指定dtype使用標準Python型別。不過NumPy提供它自己的資料型別。
itemsize 陣列中每個元素的位元組大小。例如,一個元素型別為float64的陣列itemsiz屬性值為8(=64/8),又如,一個元素型別為complex32的陣列item屬性為4(=32/8).
a = np.array([[1,2,3],[4,5,6]])
print("維度的數量:",a.ndim)
print("陣列元素型別:",a.dtype)
print("陣列的元素個數:",a.size)
print("陣列的形狀:",a.shape)
print("陣列中每個元素的位元組大小:",a.itemsize)
輸出: 維度的數量: 2 陣列元素型別: int32 陣列的元素個數: 6 陣列的形狀: (2, 3) 陣列中每個元素的位元組大小: 4
二、numpy中的基本資料型別
下面的這兩張圖是所有的資料型別:
建立numpy陣列的時候可以通過屬性dtype
顯示指定資料型別,如果不指定的情況下,numpy會自動推斷出適合的資料型別,所以一般不需要顯示給定資料型別。
- 指定型別建立:
a = np.array([[1,2,3],[4,5,6]],dtype=int)
- astype方法
如果需要更改一個已經存在的陣列的資料型別,可以通過
astype
方法進行修改從而得到一個新陣列。
a = np.array([[1,2,3],[4,5,6]])
print("改變前的型別:",a.dtype)
a = a.astype(float)
print("改變後的型別:",a.dtype)
輸出 改變前的型別: int32 改變後的型別: float64
三、修改ndarray的形狀
對於一個已經存在的ndarray陣列物件而言,可以通過修改形狀相關的引數方法從而改變陣列的形狀。
- 直接修改陣列ndarray的shape值, 要求修改後乘積不變。
- 直接使用reshape函式建立一個改變尺寸的新陣列,原陣列的shape保持不變,但是新陣列和原陣列共享一個記憶體空間,也就是修改任何一個數組中的值都會對另外一個產生影響,另外要求新陣列的元素個數和原陣列一致。
當指定某一個軸為-1的時候,表示將根據陣列元素的數量自動計算該軸的長度值。
- 修改陣列的shape值
#調整陣列大小
a = np.array([[1,2,3],[4,5,6]])
a.shape=(3,2)
print(a)
- 使用reshape函式修改
'''
reshape 調整陣列大小
'''
a = np.array([[1,2,3],[4,5,6]])
b = a.reshape(3,2)
print(b)
輸出: [[1 2] [3 4] [5 6]]