[Numpy-discussion] design issues - octave 'incompatibilities'
Soeren Sonnenburg
python-ml at nn7.de
Sat Jul 23 09:04:16 CDT 2005
Dear all,
I am new to numarray and as I am trying to use it day-by-day
I am now wondering about certain numeric/numarray design issues. Please
forgive me / correct me as I probably misunderstood certain issues.
-- Why did you choose row-major instead of column major format as
practiced by R/octave/matlab... Doesn't that mean performance problems
as fortran/blas is optimized if you work with the transposed version ?
-- why do vectors have no 'orientation', i.e. there are only row but no
column vectors (or why do you treat matrices/vectors differently, i.e.
have vectors at all as a separate type)
numarray:
a=array([[1,2,3],[4,5,6],[7,8,9]])
>>> a[0,:]
array([1, 2, 3])
>>> a[:,0]
array([1, 4, 7])
vs. octave:
a=[1,2,3;4,5,6;7,8,9];
>> a(1,:)
ans =
1 2 3
>> a(:,1)
ans =
1
4
7
-- How can one obtain submatrices from full matrices:
numarray gives only elements (which is very, very rarely needed and
should IMHO rather be some extra function):
>>> i=[0,1]
>>> j=[0,2]
>>> a[i,j]
array([1, 6])
vs octave:
>> i=[1,2];
>> j=[1,3];
>> a(i,j)
ans =
1 3
4 6
all one can do in numarray currently is as awkward as this:
>>> a.take(i,0).take(j,1)
array([[1, 3],
[4, 6]])
also mixing slice and variable does not work a[:,i] - hmmhh seems that
is a major issue for me...
-- why don't you allow iterating over the whole matrix via a single
index ?
i.e.
a[3]
Traceback (most recent call last):
File "<stdin>", line 1, in ?
IndexError: Index out of range
vs octave
>> a(4)
ans = 2
Are there more elegant ways to do this ? Which issues are likely to be
fixed in the future ?
Best regards,
Soeren
More information about the Numpy-discussion
mailing list