-1
說我有初始化三維數組爲:分配值在3D蟒蛇陣列具體標指標拋出錯誤
arr_3d = np.zeros((100, 100, 100))
現在我想改變在標指標arr_3d
一些價值(i, j, k)
元素(比如1),其中i, j, k
是沿着三個軸分別具有大小爲100, 100, 40
的索引的列表(或數組)。我試過arr_3d[i, j, k] = 1
,但它會引發錯誤。我試圖通過np.ravel_multi_index()
將下標索引轉換爲線性索引,但看起來它不能轉換3D數組的下標索引。
上述問題很容易在Matlab中解決,其中使用arr_3d(i, j, k) = 1
的作品。
MATLAB的默認值是將數組索引爲塊,在本例中爲(100,100,40)塊。最接近的numpy等價物是'arr_3d [np.ix_(i,j,k)]',其中'np.ix_'將3個平面陣列轉換成3d陣列。單獨運行'np.ix_'表達式(對於較小的樣本)來查看它的功能。有關numpy索引的更多信息,請訪問https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#integer-array-indexing – hpaulj
numpy'[i,j,k]'索引更像是MATLAB線性用'idx = sub2ind(size(A),i,j,k)'索引。 – hpaulj
@hpaulj:謝謝,保羅。它似乎在工作,但訂單不被維護。例如,'a = np.zeros((4,4,4))'和'a [np.ix _([0,1,2,3],[0,1,2,3],[0 ,1])] = 1'返回一個數組,其第二維和第三維元素已被交換。 – user11