为了账号安全,请及时绑定邮箱和手机立即绑定

numpy np.array与np.matrix(性能)

numpy np.array与np.matrix(性能)

长风秋雁 2021-03-18 09:14:35
通常,在使用numpy时,我会感到烦人的区别-当我从矩阵中提取向量或行,然后使用np.arrays执行操作时,通常会遇到问题。为了减少头痛,我np.matrix倾向于有时np.matrix只是为了简单起见使用(将所有np.arrays都转换为)。但是,我怀疑这会影响性能。任何人都可以评论这可能是什么以及其原因吗?似乎如果它们都只是底层的数组,则元素访问只是获取值的偏移量计算,所以我不确定在不通读整个源代码的情况下可能会有什么不同。更具体地说,这对性能有什么影响:v = np.matrix([1, 2, 3, 4])# versus the beloww = np.array([1, 2, 3, 4])
查看完整描述

2 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

我添加了更多测试,看来array与matrix数组/矩阵小时相比,an的速度要快得多,但是对于较大的数据结构,差异会变得更小:


小(4x4):


In [11]: a = [[1,2,3,4],[5,6,7,8]]


In [12]: aa = np.array(a)


In [13]: ma = np.matrix(a)


In [14]: %timeit aa.sum()

1000000 loops, best of 3: 1.77 us per loop


In [15]: %timeit ma.sum()

100000 loops, best of 3: 15.1 us per loop


In [16]: %timeit np.dot(aa, aa.T)

1000000 loops, best of 3: 1.72 us per loop


In [17]: %timeit ma * ma.T

100000 loops, best of 3: 7.46 us per loop

较大(100x100):


In [19]: aa = np.arange(10000).reshape(100,100)


In [20]: ma = np.matrix(aa)


In [21]: %timeit aa.sum()

100000 loops, best of 3: 9.18 us per loop


In [22]: %timeit ma.sum()

10000 loops, best of 3: 22.9 us per loop


In [23]: %timeit np.dot(aa, aa.T)

1000 loops, best of 3: 1.26 ms per loop


In [24]: %timeit ma * ma.T

1000 loops, best of 3: 1.24 ms per loop

注意,矩阵的乘法运算实际上稍快一些。


查看完整回答
反对 回复 2021-03-30
  • 2 回答
  • 0 关注
  • 481 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号