來自 《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...