1.ndarray對(duì)象的內(nèi)部機(jī)理

NumPy的ndarray提供了一種將同質(zhì)化數(shù)據(jù)塊解釋為多維數(shù)組對(duì)象的方式,ndarray如此強(qiáng)大的部分原因是所有數(shù)組對(duì)象都是數(shù)據(jù)塊的一個(gè)跨度視圖。

ndarray內(nèi)部由以下內(nèi)容組成:

a.一個(gè)指向數(shù)組(一個(gè)系統(tǒng)內(nèi)存塊)的指針

b.數(shù)據(jù)類型或dtype

c.一個(gè)表示數(shù)組形狀的元組;例如,一個(gè)10*5的數(shù)組,其形狀為(10,5)

d.一個(gè)跨度元組,其中的整數(shù)指的是為了前進(jìn)到當(dāng)前維度下一個(gè)元素需要“跨度”的字節(jié)數(shù);如,一個(gè)3*4*5的float(8個(gè)字節(jié))數(shù)組,其跨度為(160,40,8)

2.NumPy數(shù)據(jù)類型體系

NumPy數(shù)據(jù)類型體系

3.gao級(jí)重塑

假設(shè)有一個(gè)一維數(shù)組,我們希望將其重新排列為一個(gè)矩陣

*重塑

多維數(shù)組同樣也能被重塑。

4.C和Fortran順序

默認(rèn)情況下,NumPy數(shù)組是按行優(yōu)先順序創(chuàng)建的。在空間方面,意味著,對(duì)于一個(gè)二維數(shù)組,每行中的數(shù)據(jù)項(xiàng)是被存放在相鄰內(nèi)存位置上的。另一種順序是列優(yōu)先順序,意味著每列中的數(shù)據(jù)項(xiàng)是被存放在相鄰內(nèi)存位置上的。

由于一些歷史原因,行和列優(yōu)先順序又分別稱為C和Fortran順序。

C和Fortran順序

二維或更高數(shù)組的重溯過(guò)程比較令人費(fèi)解。C和Fortran順序的關(guān)鍵區(qū)別就是維度的行進(jìn)順序:

a.C/行優(yōu)先順序:先經(jīng)過(guò)更高的維度(如,軸1會(huì)優(yōu)先于軸0被處理)

b.Fortran/列優(yōu)先順序:后經(jīng)過(guò)更高的維度(如,軸0會(huì)優(yōu)先于軸1被處理)

5.數(shù)組的合并和拆分

numpy.concatenate可以按指定軸將一個(gè)由數(shù)組組成的列連接到一起;對(duì)于常見(jiàn)的連接操作,NumPy提供了一些比較方便的方法(如vstack和hstack)。因此,上面的運(yùn)算還可以表達(dá)為:

print np.vstack((arr5,arr6))

print np.hstack((arr5,arr6))

結(jié)果為:

[[ 1 2 3]

[ 4 5 6]

[ 7 8 9]

[10 11 12]]

[[ 1 2 3 7 8 9]

[ 4 5 6 10 11 12]]

與此相反,split用于將一個(gè)數(shù)組沿指定軸拆分為多個(gè)數(shù)組。

5.堆疊輔助類:r_和c_

NumPy命名空間中有兩個(gè)特殊的對(duì)象:r_和c_,他們可以是數(shù)組的堆疊操作變的簡(jiǎn)潔

.數(shù)組的合并和拆分

6.元素的重復(fù)操作:tile和repeat

repeat會(huì)將數(shù)組中的各個(gè)元素重復(fù)一定次數(shù),從而產(chǎn)生一個(gè)更大的數(shù)組;默認(rèn)情況下,如果傳入的是一個(gè)整數(shù),則各元素就都會(huì)重復(fù)那么多次。如果傳入的是一組整數(shù),則各元素就可以重復(fù)不同的次數(shù);對(duì)于多維數(shù)組,還可以讓它們的元素沿指定軸重復(fù);如果沒(méi)有設(shè)置軸向,則數(shù)組會(huì)被扁平化。同樣,在對(duì)多維進(jìn)行重復(fù)時(shí),也可以傳入一組整數(shù),這樣就會(huì)使各切片重復(fù)不同的次數(shù)

print arr12.repeat([2,3],axis=0)

print arr12.repeat([2,3],axis=1)

結(jié)果為:

[[-0.77124211 0.05274718]

[-0.77124211 0.05274718]

[-0.77421856 0.66942701]

[-0.77421856 0.66942701]

[-0.77421856 0.66942701]]

[[-0.77124211 -0.77124211 0.05274718 0.05274718 0.05274718]

[-0.77421856 -0.77421856 0.66942701 0.66942701 0.66942701]]

tile的功能是沿指定軸向堆疊數(shù)組的副本。你可以形象地將其想象成“鋪瓷磚”;第二個(gè)參數(shù)是瓷磚的數(shù)量。對(duì)于標(biāo)量,瓷磚是水平鋪設(shè)的,而不是垂直鋪設(shè)。它可以是一個(gè)表示“鋪設(shè)”布局的元組。