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

通常,在使用numpy时,我会感到烦人的区别-当我从矩阵中提取向量或行,然后使用np.arrays执行操作时,通常会遇到问题。


为了减少头痛,我np.matrix倾向于有时np.matrix只是为了简单起见使用(将所有np.arrays都转换为)。但是,我怀疑这会影响性能。任何人都可以评论这可能是什么以及其原因吗?


似乎如果它们都只是底层的数组,则元素访问只是获取值的偏移量计算,所以我不确定在不通读整个源代码的情况下可能会有什么不同。


更具体地说,这对性能有什么影响:


v = np.matrix([1, 2, 3, 4])

# versus the below

w = np.array([1, 2, 3, 4])


长风秋雁
浏览 483回答 2
2回答

米琪卡哇伊

我添加了更多测试,看来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 loopIn [15]: %timeit ma.sum()100000 loops, best of 3: 15.1 us per loopIn [16]: %timeit np.dot(aa, aa.T)1000000 loops, best of 3: 1.72 us per loopIn [17]: %timeit ma * ma.T100000 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 loopIn [22]: %timeit ma.sum()10000 loops, best of 3: 22.9 us per loopIn [23]: %timeit np.dot(aa, aa.T)1000 loops, best of 3: 1.26 ms per loopIn [24]: %timeit ma * ma.T1000 loops, best of 3: 1.24 ms per loop注意,矩阵的乘法运算实际上稍快一些。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python