Numpy學(xué)習(xí)筆記01——ndarray的概念和創(chuàng)建

什么是ndarray?

ndarray是Numpy的核心數(shù)據(jù)結(jié)構(gòu),一個ndarray對象代表了一個n維數(shù)組,是一系列同類型數(shù)據(jù)的集合。

ndarray可以理解為能夠進行更復(fù)雜運算的list。

實際上,ndarray是對數(shù)學(xué)中張量 (通俗理解張量, 戳這里)這一概念的邏輯表達,通俗地講,1維的張量就是向量,2維的張量就是矩陣。除了負責(zé)存儲數(shù)據(jù)之外,ndarray還提供了許多向量、矩陣的運算,例如點乘、轉(zhuǎn)置、求均值等等。

一個典型的ndarray結(jié)構(gòu)如下圖所示:

可以看到,ndarray由兩個部分組成:

  • header:信息頭,存放了指向數(shù)據(jù)區(qū)塊的指針,數(shù)據(jù)類型的描述,以及數(shù)組的維度信息等
  • data:數(shù)據(jù)塊,一系列相同大小的內(nèi)存塊,存放的就是實際的數(shù)據(jù)值

ndarray的構(gòu)造

np.array(data) 方法用于從現(xiàn)有數(shù)據(jù)構(gòu)造ndarray,data可以是手動輸入的數(shù)據(jù)、列表、ndarray

>>> import numpy as np 
>>> a=np.array([1,2,3,4])#可以直接輸入數(shù)據(jù)
>>> print(a)
[1 2 3 4]

>>>data=range(1,10)
>>> b=np.array(data)#也可以基于list構(gòu)造ndarray
>>> print(b)
[1 2 3 4 5 6 7 8 9]

>>> c=np.array(b) #當然,從現(xiàn)有的ndarray構(gòu)造也可以
>>> print(c)
[1 2 3 4 5 6 7 8 9]

Numpy也提供了一些方法用于創(chuàng)建特殊的矩陣:

一般情況下,它們的調(diào)用方式為np.xxx(shape),其中,shape是一個元組,表示將要創(chuàng)建的ndarray的形狀。例如,np.empty((5,3))就表示創(chuàng)建一個5行3列的空矩陣。

>>> import numpy as np

#創(chuàng)建一個空的二維ndarray
>>> a=np.empty((5,3))
>>> print(a)#注意這里的數(shù)據(jù)并非真正意義上的空值,解釋器仍會將其初始化
[[6.23042070e-307 1.89146896e-307 1.37961302e-306]
 [1.05699242e-307 8.01097889e-307 1.78020169e-306]
 [7.56601165e-307 1.02359984e-306 1.33510679e-306]
 [2.22522597e-306 1.78019761e-306 1.78019761e-306]
 [1.20160711e-306 2.56765117e-312 0.00000000e+000]]

#創(chuàng)建一個三維全1數(shù)組
>>> b=np.ones((2,3,5))
>>> print(b)
[[[1. 1. 1. 1. 1.]
  [1. 1. 1. 1. 1.]
  [1. 1. 1. 1. 1.]]

 [[1. 1. 1. 1. 1.]
  [1. 1. 1. 1. 1.]
  [1. 1. 1. 1. 1.]]]

#創(chuàng)建一個全0向量
>>> c=np.zeros((10))
>>> print(c)#如果在shape中只傳入一個參數(shù),那么默認是行向量的長度
[[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]

#創(chuàng)建一個對角矩陣
>>> d=np.eye(5)
>>> print(d)
[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]

總結(jié)

方法名 功能
array(data) 從現(xiàn)有數(shù)據(jù)創(chuàng)建ndarray
empty(shape) 創(chuàng)建空數(shù)組
ones(shape) 創(chuàng)建全1數(shù)組
zeros(shape) 創(chuàng)建全0數(shù)組
eye(shape) 創(chuàng)建對角矩陣
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容