Soeren Sonnenburg wrote:
On Mon, 2005-07-25 at 08:59 -0700, Chris Barker wrote:
[snip]
such thing as a column vs. a row vector. A vector is a one-dimensional array: it has no orientation.
This makes life more difficult if one wants to convert from octave/matlab -> numarray and automated systems close to impossible.
<shrug> That wasn't a design goal.
If vectors had the same properties/functions as matrices one would not have such problems, i.e. v^{transpose} * u == dot(v,u) and v*u -> error
That would be a big problem for those of us who don't use Numeric just for linear algebra. These are general arrays, not matrices and vectors. [snip]
In my eyes 'array broadcasting' is confusing and should rather be in a function like meshgrid and instead a*b should return matrixmultiply(a,b) ...
Spend some time with it. It will probably grow on you. Numeric is not Matlab or Octave. It never will be, thank G-d. [snip]
I hope that helps:
Indeed it does - Thanks!! Unfortunately I am not at all happy now that '*' != matrixmultiply (but outerproduct) for vectors/matrices...
Again, Numeric is a package for arrays, not just linear algebra. Please spend some more time with Python and Numeric before deciding that they must be changed to match your preconceptions.
I realize that with lists it is ok to grow them via slicing.
x=[] x[0]=1 IndexError: list assignment index out of range x[0:0]=[1] x [1]
that seems not to work with numarray ... or ?
y=array() y[0]=1 TypeError: object does not support item assignment y[0:0]=array([1]) TypeError: object does not support item assignment
Python lists are designed to grow dynamically. Their memory is preallocated so that growing them is on average pretty cheap. Numeric arrays are not, nor will they be. -- Robert Kern rkern@ucsd.edu "In the fields of hell where the grass grows high Are the graves of dreams allowed to die." -- Richard Harter