1
我有一個4維數組,我需要從給定維數的這個數組中處理所有1維向量。這種運作良好:從多維數組中選擇一些維數
def myfun(arr4d,selected_dim): # selected_dim can only be 2 or 3 print arr4d.shape # (2, 5, 10, 10) for i in xrange(arr4d.shape[0]): for j in xrange(arr4d.shape[1]): for k in xrange(arr4d.shape[selected_dim]): if selected_dim==2: arr=arr4d[i,j,k,:] elif selected_dim==3: arr=arr4d[i,j,:,k] do_something(arr) # arr is 1-D and has 10 items
...但我相信有一些方法來避免嵌套「如果」的一部分,也許還更有效率?就像在循環之前創建此數組的其他視圖,然後迭代這些視圖一樣?處理這種
你的意思是你想要避免的嵌套for循環?我只看到一個簡單的if ... elif構造。 – 2013-05-07 19:12:36
我的意思是避免嵌套的'if',並且可選地避免三個'for'。根據@BiRico的回答,'numpy.rollaxis'是擺脫困擾我的「可變維度」問題的一種方法。 – dolphin 2013-05-07 19:51:37