在使用numpy时,我经常发现这种区别很烦人--当我从矩阵中取出一个向量或一行,然后使用np.array
执行操作时,通常会出现问题。
为了减少麻烦,我已经采取了有时只是使用np.matrix
(转换所有np.arrays到np.matrix
)只是为了简单。然而,我怀疑有一些性能暗示。任何人可以评论一下那些可能是什么和为什么?
看起来好像它们都是隐藏在幕后的数组,元素访问只是一个偏移量计算,以获得值,所以在没有阅读整个源代码的情况下,我不确定它们之间的区别可能是什么。
更具体地说,这对性能有何影响:
v = np.matrix([1, 2, 3, 4])
# versus the below
w = np.array([1, 2, 3, 4])
谢谢
2条答案
按热度按时间xoefb8l81#
我又添加了一些测试,看起来当数组/矩阵很小时,
array
比matrix
快得多,但是对于较大的数据结构,差别就小了:小号(4x 4):
较大尺寸(100 x100):
请注意,矩阵乘法实际上稍快一些。
我相信我在这里得到的与@Jaime解释的评论一致。
gcxthw6b2#
在www.example.com和this question上有一个一般性的讨论SciPy.org。
为了比较性能,我在iPython中做了以下操作,结果发现数组明显更快。
因此numpy数组似乎比numpy矩阵有更快的性能。
纽比:1.7.1
IPython版本:0.13.2
Python语言:2.7