我加了一些測試,它似乎是一個array
在陣列/矩陣很小時比matrix
快得多,但對於較大的數據結構差異變小:
小:
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
較大:
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
注意,矩陣實際上是略快於乘法。
我相信我在這裏得到的結果與@Jaime解釋評論的內容是一致的。
重複[http://stackoverflow.com/questions/4151128/what-are-the-differences-between-numpy-arrays-and-matrices-which-one-should-iu](http://stackoverflow.com .com/questions/4151128/what-are-the-differences-between-numpy-arrays-and-matrices-which-one-should-iu) – jozzas
是的,但是我的問題是關於性能,這個帖子沒有提到。我會編輯我的問題,以使焦點更加清晰。 – lollercoaster
我懷疑是否有任何重大的性能影響,但是如果不知道你計劃在創建它之後用對象做什麼,就很難說。爲什麼不做一些測試功能並給'timeit'一個試試看? – mgilson