[Numpy-discussion] Detect subclass of ndarray
Charles R Harris
Sat Mar 24 17:29:51 CDT 2007
On 3/24/07, Travis Oliphant <firstname.lastname@example.org> 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
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)
How about I just replace
or maybe something like
rhs = asmatrix(other)
val = dot(self, rhs)
val = NotImplemented
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.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Numpy-discussion