[機器學習][基礎編程][numpy]numpy屬性

概覽

  • 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
# ndarray修改形狀
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)

# reshape修改複製之後的數組形狀,shape修改原數組形狀
a

array([[  0, 100,   4,   6,   8],
       [ 10,  12,  14,  16,  18]])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章