概覽
- 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).
ndarray中元素數據類型
- 創建numpy數組的時候可以通過屬性dtype顯示指定數據類型,如果不指定的情況下,numpy會自動推斷出適合的數據類型,所以一般不需要顯示給定數據類型。
- 如果需要更改一個已經存在的數組的數據類型,可以通過astype方法進行修改從而得到一個新數組。
NumPy基本數據類型
- 數值型dtype的命名方式爲:一個類型名稱(eg:int、float等),後接一個表示各個元素位長的數字
- 比如Python的float數據類型(雙精度浮點值),需要佔用8個字節(64位),因此在NumPy中記爲float64
- 每個數據類型都有一個類型代碼,即簡寫方式
ndarray修改形狀
- 對於一個已經存在的ndarray數組對象而言,可以通過修改形狀相關的參數/方法從而改變數組的形狀。
- 直接修改數組ndarray的shape值, 要求修改後乘積不變。
- 直接使用reshape函數創建一個改變尺寸的新數組,原數組的shape保持不變,但是新數組和原數組共享一個內存空間,也就是修改任何一個數組中的值都會對另外一個產生影響,另外要求新數組的元素個數和原數組一致。
- 當指定某一個軸爲-1的時候,表示將根據數組元素的數量自動計算該軸的長度值。
import numpy as np
a = np.arange(0,20,2)
print(a)
[ 0 2 4 6 8 10 12 14 16 18]
b = a.reshape(2,5)
print(b)
print(b.size)
[[ 0 2 4 6 8]
[10 12 14 16 18]]
10
b[0][1]=100
print(a)
print(b)
[ 0 100 4 6 8 10 12 14 16 18]
[[ 0 100 4 6 8]
[ 10 12 14 16 18]]
a.reshape(-1,5)
array([[ 0, 100, 4, 6, 8],
[ 10, 12, 14, 16, 18]])
a.reshape(5,-1)
array([[ 0, 100],
[ 4, 6],
[ 8, 10],
[ 12, 14],
[ 16, 18]])
a.shape
(10,)
a.shape=(2,-1)
a
array([[ 0, 100, 4, 6, 8],
[ 10, 12, 14, 16, 18]])