[Numpy-discussion] building an array using smaller arrays
David M. Cooke
cookedm at physics.mcmaster.ca
Thu Mar 1 16:14:32 EST 2007
On Mar 1, 2007, at 13:33 , Rudolf Sykora wrote:
> Hello,
>
> since noone has reacted to my last e-mail yet (for several days), I
> feel the need to ask again (since I still do not know a good answer).
> Please help me.
>
> >> Hello everybody,
> >> I wonder how I could most easily accomplish the following:
> >>
> >>Say I have sth like:
> >> a = array( [1, 2] )
> >> and I want to use this array to build another array in the
> following sence:
> >> b = array( [[1, 2, 3, a], [5, a, 6, 7], [0, 2-a, 3, 4]]) # this
> doesn't work
> >>
> >> I would like to obtain
> >> b = array( [[1, 2, 3, 1, 2], [5 ,1 ,2 ,6 ,7], [0, 1, 0, 3, 4]] )
>
> >> I know a rather complicated way but believe there must be an
> easy one.
> >> Thank you very much.
>
> >> Ruda
>
> I would need some sort of flattening operator...
> The solution I know is very ugly:
>
> b = array(( concatenate(([1, 2, 3], a)), concatenate(([5], a, [6,
> 7])), concatenate(([0], 2-a, [3, 4])) ))
Define a helper function
def row(*args):
res = []
for a in args:
a = asarray(a)
if len(a.shape) == 0:
res.append(a)
elif len(a.shape) == 1:
res += a.tolist()
else:
raise ValueError("arguments to row must be row-like")
return array(res)
then
b = array([ row(1,2,3,a), row(5,a,6,7), row(0,2-a,3,4) ])
--
|>|\/|<
/------------------------------------------------------------------\
|David M. Cooke http://arbutus.physics.mcmaster.ca/dmc/
|cookedm at physics.mcmaster.ca
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 186 bytes
Desc: This is a digitally signed message part
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20070301/d9971cd2/attachment.sig>
More information about the NumPy-Discussion
mailing list