微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Python中加倍矩阵数组的最快方法(numpy)

我有两个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 举报,一经查实,本站将立刻删除。

相关推荐