[SciPy-User] Numpy/MATLAB difference in array indexing
Mon Mar 19 05:51:38 CDT 2012
On 18.03.2012 23:37, Pauli Virtanen wrote:
>> b = tile(a[:,1],(1,5))
> a[:,1] is an 1-d array, and therefore considered as a (1, N) vector in
> 2-d context. This is not a bug --- the Numpy constructs do not always
> map exactly to Matlab ones.
Also, the need for "repmats" (np.repeat, np.tile, np.hstack, np.vstack)
and "reshapes" (np.reshape, np.ndarray.reshape) is less prominent in
NumPy because of broadcasting. Using MATLAB idioms like reshape and
repmat instead of broadcasting is a common mistake (or bad habit) when
coming to NumPy for MATLAB.
In my experience, 99% of cases for
a .* reshape(b,m,n)
a .* repmat(b,m,n)
in MATLAB will just map to NumPy constructs like these:
a * b
a * b[:,np.newaxis]
This, in addition to view arrays, make NumPy much more memory efficient.
Not to mention that a.T is O(1) in NumPy whereas a' is O(N*M) in MATLAB.
More information about the SciPy-User