首先一個簡單的例子從2D numpy的陣列的numpy的陣列創建塊numpy的陣列有效地
import numpy as np
a = np.ones((2,2))
b = 2*np.ones((2,2))
c = 3*np.ones((2,2))
d = 4*np.ones((2,2))
e = np.array([[a,b],[c,d]])
print(np.vstack(np.array([np.hstack(e[i,:]) for i in range(2)])))
產生
[[ 1. 1. 2. 2.]
[ 1. 1. 2. 2.]
[ 3. 3. 4. 4.]
[ 3. 3. 4. 4.]]
這是完全一樣的print(np.bmat(e.tolist()))
或print(np.bmat([[a,b],[c,d]]))
結果(以np.bmat
創建可以投射的numpy矩陣的事實爲模,使用np.asarray()
)。
但是,我的問題是,我有一個代碼,我創建了一個大的numpy數組36(現在,將變得更晚,像400)2D numpy數組,我想創建一個大塊numpy數組在他們之外。我想有效地做到這一點,如果可能的話,避免列表和numpy數組之間的任何轉換,因爲這是更大的循環結構的一部分,因此會多次完成(每次的數組都不相同)。那可能嗎?
好的,也許我不清楚。事實上,這個簡單的例子是有效的。但在我真正的問題中,我創建了一個大的numpy數組,並且我不想將它轉換爲列表 – ThunderBiggi
如果你有像36個數組,那麼初始化o/p數組然後迭代地切成o/p數組並進行分配? – Divakar
我不太明白你的意思。數組的數量是我計劃在不久的將來增加的參數的函數,所以它應該是完全自動的 – ThunderBiggi