necomancer

2018-09-28 00:31:34 +08:00

不客气。我很久没鼓捣过这玩意儿了,我记得 numba 的各路 jit 处理这个问题是很嗨的,你要是经常遇到这种问题,去看看 numba 吧,有 GPU 加速更开心 ^_^

In [1]: from numba import guvectorize, float64

In [2]: a = np.random.random((100000,2,2))

In [3]: b = np.random.random((100000,2,2))

In [4]: c = np.matmul(a, b)

In [5]: d = np.array([np.dot(i,j) for i,j in zip(a,b)])

In [6]: @guvectorize([(float64[:,:],float64[:,:], float64[:,:])], '(n,m),(m,n)->(n,n)', target='parallel') #target='cpu','gpu'

...: def mydot(a,b,res):

...: for i in range(res.shape[0]):

...: for j in range(res.shape[1]):

...: tmp = 0.

...: for k in range(a.shape[1]):

...: tmp += a[i, k] * b[k, j]

...: res[i, j] = tmp

...:

In [7]: e = mydot(a, b)

In [8]: np.allclose(c,e)

Out[8]: True

In [9]: np.allclose(c,d)

Out[9]: True

In [10]: %timeit mydot(a,b)

234 µs ± 4.02 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [11]: %timeit np.array(list(map(np.dot, a, b)))

210 ms ± 2.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In [12]: %timeit np.array([np.dot(i,j) for i, j in zip(a,b)])

235 ms ± 5.87 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In [13]: %timeit np.matmul(a,b)

41.1 ms ± 90 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

python3两个三阶矩阵相乘公式_Numpy 两个矩阵部分维度相乘,有没有很快的方法?...相关推荐

  1. python矩阵和向量乘积_Numpy:将矩阵与向量数组相乘

    我很难进入numpy . 我最终想要的是一个由矩阵变换的矢量的简单箭袋图 . 我已经阅读了很多次,只是使用数组作为矩阵,足够公平 . 我有一个x和y坐标的网格 X,Y = np.meshgrid( n ...

  2. python矩阵和向量乘积_NumPy 中的矩阵和向量

    NumPy 中的矩阵和向量 numpy的 ndarray 类用于表示矩阵和向量. 要在numpy中构造矩阵,我们在列表中列出矩阵的行, 并将该列表传递给numpy数组构造函数. 例如,构造与矩阵对应的 ...

  3. python3两个三阶矩阵相乘公式_python的几种矩阵相乘的公式详解

    1. 同线性代数中矩阵乘法的定义: np.dot() np.dot(A, B):对于二维矩阵,计算真正意义上的矩阵乘积,同线性代数中矩阵乘法的定义.对于一维矩阵,计算两者的内积.见如下Python代码 ...

  4. 两个3×3矩阵乘法例题_两个3×3矩阵相乘 三个矩阵相乘从左向右算还是从右算起...

    两个三乘三矩阵相乘怎么算,在线等 设A为m*p的矩阵,B为p*n的矩阵,那么称m*n的矩阵C为矩阵A与B的乘积,记作C=AB ,其中矩阵C中的第i行第j列元素可以表示为: 例如: 扩展资料: 注意事项 ...

  5. python数组对应元素相乘_python的几种矩阵相乘的公式详解

    1. 同线性代数中矩阵乘法的定义: np.dot() np.dot(A, B):对于二维矩阵,计算真正意义上的矩阵乘积,同线性代数中矩阵乘法的定义.对于一维矩阵,计算两者的内积.见如下Python代码 ...

  6. python矩阵的平方_NumPy之计算两个矩阵的成对平方欧氏距离

    问题描述 设 (; 表示纵向连接) 和 , 计算矩阵 中每一个行向量和矩阵 中每一个行向量的平方欧氏距离 (pairwise squared Euclidean distance), 即计算: (这是 ...

  7. Java黑皮书课后题第8章:**8.6(代数:两个矩阵相乘)编写两个矩阵相乘的方法。编写一个测试程序,提示用户输入两个3*3的矩阵,然后显示它们的乘积

    **8.6(代数:两个矩阵相乘)编写两个矩阵相乘的方法.编写一个测试程序,提示用户输入两个3*3的矩阵,然后显示它们的乘积 题目 题目描述与运行示例 破题 代码 题目 题目描述与运行示例 **8.6( ...

  8. C++两个矩阵相乘代码(内附有矩阵相乘的条件与规则,以及对代码的详细解答)

    再复制粘贴代码之前可以先了解学习一下什么是矩阵相乘,矩阵相乘的条件与规则又是什么. 点击一下链接即可进入学习:                       #矩阵相乘的学习链接 以下是两个矩阵相乘的代 ...

  9. 利用矩阵相乘公式Cij = ∑ a ik × b kj,编程计算m×n阶矩阵A和n×m阶矩阵B之积

    苏小红第三版习题8.2的(4)中遇到的一道矩阵相乘的问题,许多初学者作为大一新生可能还没接触过线性代数中的矩阵乘法.为此作随笔... 简单来说矩阵的乘法是满足 a×b 乘以 b×c格式的,中间必须相同 ...

最新文章

  1. Sublime Text 4首个稳定版发布:全新UI、多选项卡、支持GPU渲染
  2. 学习linux基础操作,从0开始入门!
  3. python批量读取文件夹的图片并处理成模型输入格式
  4. java实现k-means算法(用的鸢尾花iris的数据集,从mysq数据库中读取数据)
  5. Pandas(鸢尾花案例:groupby, agg, apply)
  6. OpenCV: FFMPEG: tag 0x5634504d/‘MP4V‘ is not supported with codec id 12 and format ‘mp4 / MP4
  7. php 判断设备是手机还是平板还是pc
  8. cookie token 了解一下
  9. 在线查找和下载jar包的好工具maven repository
  10. python aiml_Python AIML搭建聊天机器人实例
  11. 微信群机器人管理系统源码
  12. 如何网络监测其他计算机关闭445端口,关闭445端口方法 包括XP win7和win10系统(超详细)...
  13. questasim仿真优化加速问题(object无信号,无法看波形,(vsim-12110) All optimizations are disabled,error loading design)
  14. Linux_加密和安全详细介绍
  15. 最喜欢的动画片《长江7号爱地球》
  16. 软件设计证书倒数50天-软件工程重要的证书
  17. c# 调整图片分辨率
  18. 借名买房规避限购政策的,合同应认定为无效
  19. 才睡醒,写完了好久,就在今天发了吧
  20. VS插件VA小番茄下载破解安装

热门文章

  1. Jenkins持续集成之小试牛刀
  2. Python学习(十)Python 函数
  3. Android优化系列之ListView优化老生常谈
  4. 产品经理 - 汽车维修连锁企业 - 发展预测
  5. myeclipse8.5集成svn
  6. java中各种时间格式的转化
  7. OpenGLES渲染
  8. TOJ3651确定比赛名次
  9. SDUT 1291数据结构上机测试4.1:二叉树的遍历与应用1
  10. 美丽人生论坛看贴工具delphi版