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.
--
Pauli Virtanen
_______________________________________________
SciPy-User mailing list
SciPy...@scipy.org
http://mail.scipy.org/mailman/listinfo/scipy-user
In [3]: b = tile(a[:,1:2],(1,5))
In [4]: b.shape
Out[4]: (10, 5)
>> 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.
Yes.
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.
Sturla