I added some more tests, and it seems that array much faster than matrix when arrays / matrices are small, but the difference is greater for large data structures:
Small:
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
Click to enlarge:
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
Note that matrix multiplication is actually a bit faster.
I believe that what I get here is consistent with what @Jaime explains the comment.
source share