[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>


More information about the NumPy-Discussion mailing list