On Wed, Feb 07, 2007 at 10:35:14AM +0000, Christian wrote: > Hi, > > when creating an ndarray from a list, how can I force the result to be > 2d *and* a column vector? So in case I pass a nested list, there will be no > modification of the shape and when I pass a simple list, it will be > converted to a 2d column vector. I can only think of a solution using 'if' > clauses but I suppose there is a more elegant way.
One way is to sub-class ndarray: import numpy as N class ColumnVectorArray(N.ndarray): def __new__(cls,data): data = N.asarray(data).view(cls) if len(data.shape) == 1: data.shape = (-1,1) return data x = ColumnVectorArray([[1,2],[3,4],[5,6]]) print 'x =' print x print y = ColumnVectorArray([1,2,3]) print 'y =' print y print print 'x+y =' print x+y which yields: x = [[1 2] [3 4] [5 6]] y = [[1] [2] [3]] x+y = [[2 3] [5 6] [8 9]] Cheers Stéfan _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion