[Numpy-discussion] Detect subclass of ndarray
Charles R Harris
charlesr.harris@gmail....
Sat Mar 24 17:29:51 CDT 2007
On 3/24/07, Travis Oliphant <oliphant@ee.byu.edu> wrote:
>
> Alan G Isaac wrote:
> > On Sat, 24 Mar 2007, Travis Oliphant apparently wrote:
> >
> >> My opinion is that a 1-d array in matrix-multiplication
> >> should always be interpreted as a row vector. Is this not
> >> what is currently done? If not, then it is a bug in my
> >> mind.
> >>
> >
> >
> >>>> N.__version__
> >>>>
> > '1.0'
> >
> >>>> I
> >>>>
> > matrix([[ 1., 0.],
> > [ 0., 1.]])
> >
> >>>> I*N.ones(2)
> >>>>
> > matrix([[ 1., 1.]])
> >
> > If N.ones(2) were treated as a row vector,
> > matrix multiplication is not possible.
> > So the question is what should happen.
> > I would like an exception raised.
> > The current behavior is lmost certainly not desirable,
> > although it has the virute of matching ``dot``.
> >
> >
> I think that's why it is the current behavior --- by default rather than
> by design. But, dot has different use cases.
>
> I'd be fine with an error raised on matrix multiplication (as long as
> dot is not changed). In other words, I'd like to see 1-d arrays always
> interpreted the same way (as row vectors) when used in matrix
> multiplication.
The relevant bit of code is
def __mul__(self, other):
if isinstance(other, N.ndarray) or N.isscalar(other) or \
not hasattr(other, '__rmul__'):
return N.dot(self, other)
else:
return NotImplemented
How about I just replace
N.dot(self, other)
by
N.dot(self, asmatrix(other))
or maybe something like
try :
rhs = asmatrix(other)
val = dot(self, rhs)
except :
val = NotImplemented
return val
It is not clear to me why the check for __rmul__ is included in the original
code, as I believe it causes problems when the rhs is a list, i.e.
mat(eye(2))*[1,1]
currently fails.
Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://projects.scipy.org/pipermail/numpy-discussion/attachments/20070324/48f3ff93/attachment.html
More information about the Numpy-discussion
mailing list