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 루프가 피하고 싶은 것을 의미합니까? 나는 단순한 ... elif 구조 만 볼 수있다. –
나는'if'를 중첩하지 않고 선택적으로'for'를 피하는 것을 의미합니다. @BiRico의 대답에 따르면,'numpy.rollaxis'는 나를 괴롭히는 "변수 차원"문제를 제거하는 한 가지 방법입니다. – dolphin