我正在嘗試創建一個 3d 數組,其單元格條目將根據單元格索引進行計算。具體來說,我想要那個 cell (i,j,k) = sqrt(i+j+k)。使用以下 for 循環很容易做到這一點:N=10A=np.zeros((N,N,N))for i in range(N): for j in range(N): for k in range(N): A[i][j][k] = np.sqrt(i+j+k)我想知道 numpy 是否具有使這些嵌套的 for 循環變得多余的內置函數。
3 回答

HUWWW
TA貢獻1874條經驗 獲得超12個贊
最簡單和高性能的方法是使用開放網格np.ogrid
,然后執行相關操作 -
I,J,K = np.ogrid[:N,:N,:N] A = np.sqrt(I+J+K)
或者np.sum
對于單線開放網格的廣播總和 -
A = np.sqrt(np.sum(np.ogrid[:N,:N,:N]))
相關:General workflow on vectorizing loops involving range iterators
。
添加回答
舉報
0/150
提交
取消