나는 큰 3 차원 배열을 numpy로 갖는다. (크기를 100x100x100으로 말하게하자.) 여러 번 (요소의 약 70 %) 여러 부분을 반복하고 싶습니다. 그리고 같은 크기의 부울 행렬을 가지며 요소가 작업을 완료해야하는지 여부를 정의합니다.numpy 배열의 일부에 대한 반복 속도를 높이는 방법
내 현재의 방법은 형상의 배열 "좌표"(N, 3)의 동작을 수행하도록하고
for i in np.arange(many_iterations):
for j in coords:
large_array[j] = do_something(large_array[tuple(j)])
그것이 실제로 나을되는 모든 좌표가 포함 만드는 제이고 전체 배열을 평가하고 부울 배열을 테스트하기 위해 루프에 추가 연산을 포함시킵니다 (진리 평가는 한번에 여러 번 반복됩니다). 내 생각으로는이 경우에 보수가 for 루프를 없애는 것입니다.
large_array = do_something(large_array if condition True)
이 경우 마지막 줄을 어떻게 만들 수 있습니까?
'do_something '이 무엇인가에 따라'large_array [boolean_array] = do_something (large_array [boolean_array])'또는 좀 더 짧게 할 수 있습니다. –
당신의 감정이 옳다고 생각합니다. 전체 어레이에서 작업을 수행 한 다음'numpy.where'와 같은 것을 사용하면 이익이 될 것입니다. –