일부 데이터 분석을 위해 Python과 Numpy를 사용하고 있습니다.3D 배열을 통한 효율적인 반복?
저는 큰 3D 매트릭스 (NxNxN)를 가지고 있습니다. 각 셀은 다시 매트릭스입니다. 이번에는 3x3 매트릭스입니다. 매트릭스 data
를 호출, 그것은 다음과 같습니다
data[N,N,N,3,3]
나는 모든 3 × 3 행렬의 고유 값을 찾을 필요가 있고, 그것을 위해 내가 NumPy와의 eigvals
루틴을 사용하지만, 할 나이 걸립니다. 지금 나는 거의 이것을한다 :
for i in range(N):
for j in range(N):
for k in range(N):
a = np.linalg.eigvals(data[i,j,k,:,:])
N = 256의 경우, 약 1 시간 걸린다. 더 효율적으로 만드는 방법에 대한 아이디어가 있습니까?
의견을 보내 주셔서 감사합니다.
프로필을 작성하셨습니까? 나는 당신이 반복하는 것보다 훨씬 더 많은 시간을 eigvals에 소비하고 있다고 생각합니다. – matt
eigvals는 내 timeit 계산으로 약 3 배 더 오래 걸리므로 반복을 변경하면 아무 것도 영향을 미치지 않을 것이라고 생각합니다. – DSM