2014-11-06 5 views
0

우리는 다음과 같은 예를 가정 해 봅시다 : 이들은 그 다음 1D 및 인덱스에 4D 배열을 해명하는 것은 좋은 생각이 될 거라고 말하고있다 thisthis보고 후 가장 비효율적 인 방법이다공상 색인 다중 치수 : 하이퍼 큐브의 부울 매트릭스?

import numpy as np 
x = np.random.random([100,200,300,400]) 
c1 = np.arange(0,100,17) 
c2 = np.arange(0,100,17) 
c3 = np.arange(0,100,17) 
c4 = np.arange(0,100,17) 
q = (((x[c1,:,:,:])[:,c2,:,:])[:,:,c3,:])[:,:,:,c4] 

만 한 차원으로 그래서 달성하려는 목표를 달성하기위한 더 좋은 방법이 없을까요?

답변

1

당신은 적절한 인덱스를 구축하는 np.ix_을 사용할 수

빨리 크기 순서하지만 동일한 결과를 제공
>>> %timeit q = (((x[c1,:,:,:])[:,c2,:,:])[:,:,c3,:])[:,:,:,c4] 
1 loops, best of 3: 237 ms per loop 
>>> %timeit q = x[np.ix_(c1, c2, c3, c4)] 
100000 loops, best of 3: 19.3 µs per loop 

: 큰

>>> np.allclose((((x[c1,:,:,:])[:,c2,:,:])[:,:,c3,:])[:,:,:,c4], x[np.ix_(c1, c2, c3, c4)]) 
True 
+0

을! 정확히 내가 필요로하는 thats! – varantir