<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Feb 10, 2014 at 2:28 PM, Pauli Virtanen <span dir="ltr"><<a href="mailto:pav@iki.fi" target="_blank">pav@iki.fi</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">10.02.2014 23:13, Alan G Isaac kirjoitti:<br>
<div class="">> On 2/10/2014 4:03 PM, Pauli Virtanen wrote:<br>
>> What sparked this discussion (on Github) is that it is not<br>
>> possible to write duck-typed code that works correctly for:<br>
><br>
> Do you mean one must start out with an 'asarray'? Or more than<br>
> that?<br>
<br>
</div>Starting with asarray won't work: sparse matrices are not subclasses<br>
of ndarray. Matrix-free linear operators are not such either.<br>
<br>
In Python code, you usually very seldom coerce your inputs to a<br>
specific type. The situation here is a bit as if there were two<br>
different stream object types in Python, and their .write() methods<br>
did completely different things, so that code doing I/O would need to<br>
always be careful with which type of a stream was in question.<br>
<div class=""><br>
> As I detailed in past discussion, the one thing I really do not<br>
> like about the `matrix` design is that indexing always returns a<br>
> matrix. I speculate this is the primary problem you're running<br>
> into?<br>
<br>
</div>The fact that reductions to 1D return 2D objects is also a problem,<br>
but the matrix multiplication vs. elementwise multiplication and<br>
division is also an issue.<br>
<span class="HOEnZb"><font color="#888888"><br></font></span></blockquote><div><br></div><div>Is there a need for every package in numpy/scipy to support matrices? I can see leaving in the Matrix object for basic teaching/linear algebra, but perhaps it would be reasonable for more advanced applications to forgo support. That would fall into the class of not going out of the way to accommodate subclasses of ndarray that override methods. I support that approach in the long run because trying to keep all subclasses happy is extra effort that could be better spent elsewhere.<br>
<br></div><div>Chuck <br></div><br></div></div></div>