There are a couple of interesting observations here.  In your first bit, you 
have:

> ## works with a row vector
> vect0 = np.random.rand(5)
> mat[:,0]=np.transpose(vect0)

(or I prefer vect0.T).  Did you happen to notice that this works too:

> mat[:,0]=vect0
>

The transpose or the original work as well.  Unlike Scilab, python’s arrays can 
be literally 1-dimensional.  Not 5x1 but just 5,  which doesn’t have a 
transpose, because it doesn’t have a 2nd dimension.

you can see that in vect0.shape

so np.random.rand(5) doesn’t make a row-vector but a length 5 array, which is 
different than np.random.rand(5,1) or np.random.rand(1,5).  Thus, you have to 
make sure the shapes all work.

in your second example, with the column vector, you can also slice along the 
2nd dimension without transposing like:

> mat[:,0]=vect0[:,0]

mat[:,0] seems to have shape of (5,) which is just length-5 array, so setting 
it equal to 1xN or Nx1 arrays seems to cause some issues.


- Brian

On Jul 3, 2017, 15:57 -0400, paul.carr...@free.fr, wrote:
> Dear All
>
> I'm a like matlab user (more specifically a Scilab one) for years, and 
> because I've to deal with huge ascii files (with dozens of millions of 
> lines), I decided to have a look to Python and Numpy, including vectorization 
> topics.
>
> Obviously I've been influenced by my current feedbacks.
>
> I've a basic question concerning the current code: why it is necessary to 
> transpose the column vector (still in the right format in my mind)? does it 
> make sens?
>
> Thanks
>
> Paul
>
> ####################################
> import numpy as np ## np = raccourci
>
> ## works with a row vector
> vect0 = np.random.rand(5); print vect0; print("\n")
> mat = np.zeros((5,4),dtype=float)
> mat[:,0]=np.transpose(vect0); print mat
>
> ## works while the vector is still in column i.e. in a right format, isn't it?
> vect0 = np.random.rand(5,1); print vect0; print("\n")
> mat = np.zeros((5,4),dtype=float)
> mat[:,0]=np.transpose(vect0); print mat
>
> ## does not work
> vect0 = np.random.rand(5,1); print vect0; print("\n")
> mat = np.zeros((5,4),dtype=float)
> mat[:,0]=np(vect0); print mat
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@python.org
> https://mail.python.org/mailman/listinfo/numpy-discussion
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion

Reply via email to