파이썬/싸이언트/낸피를 사용하여 많은 4x4 행렬을 매우 빠르게 곱할 수있는 방법을 찾고 있습니다. 아무도 제안 할 수 있습니까? 파이썬에서의 빠르고 작은, 반복적 인 행렬 곱셈
내 현재의 시도를 보여주기 위해, 내가 계산해야하는 알고리즘이A_1 * A_2 * A_3 * ... * A_N
모든
A_i != A_j
파이썬에서 그것의 예 :
means = array([0.0, 0.0, 34.28, 0.0, 0.0, 3.4])
stds = array([ 4.839339, 4.839339, 4.092728, 0.141421, 0.141421, 0.141421])
def fn():
steps = means+stds*numpy.random.normal(size=(60,6))
A = identity(4)
for step in steps:
A = dot(A, transform_step_to_4by4(step))
%timeit fn()
1000 loops, best of 3: 570 us per loop
이 구현 Cython/Numpy의 알고리즘은 Eigen/C++을 사용하는 등가 코드보다 약 100 배 느립니다. ptimizations. 하지만 C++을 사용하고 싶지는 않습니다.
C에서 플러그인을 코딩 하시겠습니까? 파이썬에는 꽤 쉬운 C API가있다. – Dave
어떻게해야할까요? 'transform_step_to_4by4 (step) ' – askewchan
@askewchan, 6D 벡터에서 4x4 매트릭스로의 좌표 변환이라고하면 충분합니다. – Mike