我有两个2乘2复数矩阵的数组,我想知道最快的乘法方法是什么. (我想对矩阵数组的元素进行矩阵乘法.)目前,我有
numpy.array(map(lambda i: numpy.dot(m1[i],m2[i]),range(l)))
但是,一个人能比这更好吗?
谢谢,
v923z
解决方法
numpy.einsum是这个问题的最佳解决方案,它提到了DaveP参考的底部.代码干净,易于理解,比循环遍历数组并逐个进行乘法快一个数量级.以下是一些示例代码:
import numpy l = 100 m1 = rand(l,2,2) m2 = rand(l,2) m3 = numpy.array(map(lambda i: numpy.dot(m1[i],range(l))) m3e = numpy.einsum('lij,ljk->lik',m1,m2) %timeit numpy.array(map(lambda i: numpy.dot(m1[i],range(l))) %timeit numpy.einsum('lij,m2) print np.all(m3==m3e)
以下是在ipython笔记本中运行时的返回值:1000个循环,最佳3:每循环479μs10000循环,最佳3:每循环48.9μs真正
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。