1. 程式人生 > >numpy學習3:物件屬性和基本資料型別

numpy學習3:物件屬性和基本資料型別

一、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中的基本資料型別

下面的這兩張圖是所有的資料型別: 1.jpg

2.jpg

建立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]]