numpy array assignment

Fernando Pérez fperez528 at yahoo.com
Mon Sep 23 13:12:07 EDT 2002


John Hunter wrote:

>>>>>> "John" == John Hunter <jdhunter at ace.bsd.uchicago.edu> writes:
> 
>     John> I have a 2 dimensional array X which is NxM and a 1
>     John> dimensional array v which is Nx1.  I want to assign v to the
>     John> k-th column of X
> 
> This is what I've come up with so far -- if there is a better/faster
> way, please let me know....
> 
> import Numeric
> 
> def putcol(k, Z, v):
>     (n,m) = Z.shape
>     Numeric.put(Z, k+m*Numeric.arange(n), v)
> 
> def putrow(k, Z, v):
>     (n,m) = Z.shape
>     Numeric.put(Z, k*m+Numeric.arange(m), v)
> 
> 
> Z = Numeric.zeros( (3,5), Numeric.Float  )
> vc = Numeric.ones( (3,1), Numeric.Float )
> vr = Numeric.ones( (1,5), Numeric.Float )
> 
> putcol(3, Z, vc)
> putrow(1, Z, vr)
> print Z

How about:

In [38]: z=Numeric.zeros( (3,5), Numeric.Float  )

In [39]: z[1] = vr[0]

In [40]: z[:,3]=vc[:,0]

In [41]: z
Out[41]:
array([[ 0.,  0.,  0.,  1.,  0.],
       [ 1.,  1.,  1.,  1.,  1.],
       [ 0.,  0.,  0.,  1.,  0.]])

Cheers,

f.



More information about the Python-list mailing list