Numpy 組合陣列的幾種方法

2021-08-17 22:21:51 字數 2210 閱讀 5307

來自 《python資料分析基礎教程:numpy 學習指南(第2版)》

下面將介紹組合陣列的幾種方法:

0.建立兩個3*3的陣列

from numpy import *

a = arange(9).reshape(3,3)

print(a)

b = 2 * a

print(b)

得到結果

[[0 1 2]

[3 4 5]

[6 7 8]]

[[ 0 2 4]

[ 6 8 10]

[12 14 16]]

1.水平組合

將ndarray物件構成的元組作為引數,傳給hstack函式

c = hstack((a,b))

print(c)

或者用concatenate函式實現同樣的效果

c = concatenate((a,b), axis=1)

print(c)

得到結果

[[ 0  1  2  0  2  4]

[ 3 4 5 6 8 10]

[ 6 7 8 12 14 16]]

2.垂直組合

同樣需要構造乙個元組作為引數,只不過是傳給vstack函式

c = vstack((a,b))

print(c)

或者用concatenate函式實現同樣的效果,此時axis引數設定為0,這也是axis引數的預設值

c = concatenate((a,b), axis=0)

print(c)

得到結果

[[ 0  1  2]

[ 3 4 5]

[ 6 7 8]

[ 0 2 4]

[ 6 8 10]

[12 14 16]]

3.深度組合

將相同的元組作為引數傳給dstack函式,即可完成陣列的深度組合。所謂深度組合,就是將一系列陣列沿著縱軸(深度)的方向進行層疊組合。舉個例子,有若干張二維平面內的影象點陣資料,我們可將這些影象資料沿縱軸方向層疊在一起,這就形象地解釋了什麼是深度組合。

c = dstack((a,b))

print(c)

得到結果

[[[ 0  0]

[ 1 2]

[ 2 4]]

[[ 3 6]

[ 4 8]

[ 5 10]]

[[ 6 12]

[ 7 14]

[ 8 16]]]

4.列組合

column_stack函式對於一維陣列將按列方向進行組合,如下所示:

oned = arange(2)

print(oned)

twice_oned = 2 * oned

print(twice_oned)

c = column_stack((oned, twice_oned))

print(c)

得到結果

[0 1]

[0 2]

[[0 0]

[1 2]]

對於二維陣列,column_stack與hstack的效果是相同的:

[[ 0  1  2  0  2  4]

[ 3 4 5 6 8 10]

[ 6 7 8 12 14 16]]

5.行組合

對於兩個一維陣列,將直接層疊起來組合成乙個二維陣列

c = row_stack((oned, twice_oned))

print(c)

得到結果

[[0 1]

[0 2]]

對於二維陣列,row_stack與vstack的效果相同

[[ 0  1  2]

[ 3 4 5]

[ 6 7 8]

[ 0 2 4]

[ 6 8 10]

[12 14 16]]

組合數 求組合數的幾種方法總結

求c n,m mod的方法總結 1.當n,m都很小的時候可以利用楊輝三角直接求。c n,m c n 1,m c n 1,m 1 2.利用乘法逆元。乘法逆元 a b mod a b mod 2 mod為素數。逆元可以利用擴充套件歐幾里德或尤拉函式求得 1 擴充套件歐幾里德 b x p y 1 有解,x...

組合數的幾種求法

cnm p c n m p cnm p 0 m n 1000 0 leq m leq n leq 1000 0 m n 1000 1 p 1e9 1 leq p leq 1e9 1 p 1e 9,直接求 void com int n,int p 0 m n 1 e18 0 leq m leq n l...

陣列複製的幾種方法

一 for迴圈 二 使用system.arraycopy方法 system.arraycopy src,srcpos,dest,destpos,length 可以選定複製原陣列的部分內容,但新陣列需要先宣告並初始化 另外這種方法可以用來實現原陣列的擴容,即將原陣列的內容拷進去,但是比較麻煩 三 ar...