我正在寻找一种使用 Python/Cython/Numpy 快速将许多 4x4 矩阵相乘的方法,有人可以提供任何建议吗?
为了展示我目前的尝试,我有一个需要计算的算法
A_1 * A_2 * A_3 * ... * A_N
哪里每
A_i != A_j
Python中的一个例子:
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 倍。不过,我真的不想使用 C++。