[Numpy-discussion] Preliminary thoughts on implementing __matmul__

Charles R Harris charlesr.harris at gmail.com
Wed Aug 6 19:27:01 EDT 2014

On Wed, Aug 6, 2014 at 5:24 PM, Charles R Harris <charlesr.harris at gmail.com>

> On Wed, Aug 6, 2014 at 4:57 PM, Nathaniel Smith <njs at pobox.com> wrote:
>> On Wed, Aug 6, 2014 at 4:32 PM, Charles R Harris
>> <charlesr.harris at gmail.com> wrote:
>> > Should also mention that we don't have the ability to operate on stacked
>> > vectors because they can't be identified by dimension info. One
>> workaround
>> > is to add dummy dimensions where needed, another is to add two flags,
>> row
>> > and col, and set them appropriately. Two flags are needed for backward
>> > compatibility, i.e., both false is a traditional array.
>> It's possible I could be convinced to like this, but it would take a
>> substantial amount of convincing :-). It seems like a pretty big
>> violation of orthogonality/"one obvious way"/etc. to have two totally
>> different ways of representing row/column vectors.
> The '@' operator supports matrix stacks, so it would seem we also need to
> support vector stacks. The new addition would only be effective with the
> '@' operator. The main problem I see with flags is that adding them would
> require an extensive audit of the C code to make sure they were preserved.
> Another option, already supported to a large extent, is to have row and col
> classes inheriting from ndarray that add nothing, except for a possible new
> transpose type function/method. I did mock up such a class just for fun,
> and also added a 'dyad' function. If we really don't care to support
> stacked vectors we can get by without adding anything.
Note that the '@' PEP is not compatible with current 'dot' for arrays with
more than two dimensions and for scalars.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20140806/470e54bd/attachment.html>

More information about the NumPy-Discussion mailing list