[SciPy-user] how to make vectors and arrays of the same length ?
Michael McNeil Forbes
mforbes at physics.ubc.ca
Sat Apr 28 04:20:26 EDT 2007
How about this:
def extend(a,extent):
"""Return an extended version of a.
The new array will have shape = (...,extent) and will be
padded with the last 'column' of a.
>>> a = asarray([[1,2,3],[4,5,6]])
>>> extend(a,6)
array([[1, 2, 3, 3, 3, 3],
[4, 5, 6, 6, 6, 6]])
"""
new_shape = list(a.shape) # Make new_shape a
mutable list
old_extent = min(extent,new_shape[-1]) # Allow extent to shrink
array
new_shape[-1] = extent
extended_a = empty(new_shape,dtype=a.dtype)
extended_a[...,:old_extent] = a[...,:old_extent]
extended_a[...,old_extent:] = a[...,-1:]
return extended_a
Michael.
On 28 Apr 2007, at 12:46 AM, Stef Mientki wrote:
> hello,
>
> I've found a working solution for the problem,
> but I'm not happy with it,
> because I can't manage to do it without 2 transposes,
> and I've the feeling my solution is much too complicated.
> So I'ld be much obliged if someone gives me a better solution,
> or tell me that this is thé solution.
>
> thanks,
> Stef Mientki
>
> # start with a 2-dimensional array
> # we want to expand the second index with the last value
> a=asarray([[1,2,3],[4,5,6]])
>
> # get the last row
> b=asarray(a[:,-1])
>
> # now extend the row with 3 samples
> a=a.transpose()
> a=vstack((a,b))
> a=vstack((a,b))
> a=vstack((a,b))
> a=a.transpose()
>
> And here is the result
> [[1 2 3 3 3 3]
> [4 5 6 6 6 6]]
>
> _______________________________________________
> SciPy-user mailing list
> SciPy-user at scipy.org
> http://projects.scipy.org/mailman/listinfo/scipy-user
More information about the SciPy-User
mailing list