# [Numpy-discussion] New python/numpy user

paul.carrico at free.fr paul.carrico at free.fr
Tue Jul 4 03:32:42 EDT 2017

```Hi Brian

First of all thanks for the answer, the explanations and the advices; as
mentioned I've to think differently in order to code with efficiency.

1.: yes 'mat[:,0]=vect0' works fine and I understand why :-)

2. more generally, I've read some tutorials or presentations saying that
Numpy is faster than the native Python; regarding the (huge) size of my
matrices, vectorization, Numpy (and others) + optimzation of calls are
the basics

Thanks

Paul

Le 2017-07-04 01:04, Brian Blais a écrit :

> 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.carrico at 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 at python.org
>> https://mail.python.org/mailman/listinfo/numpy-discussion
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20170704/611b0898/attachment.html>
```