<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jan 7, 2017 at 2:29 PM, Ralf Gommers <span dir="ltr"><<a href="mailto:ralf.gommers@gmail.com" target="_blank">ralf.gommers@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On Sun, Jan 8, 2017 at 9:31 AM, Todd <span dir="ltr"><<a href="mailto:toddrjen@gmail.com" target="_blank">toddrjen@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="auto"><div><div class="m_4162494620655003841h5"><div><br><div class="gmail_extra"><br><div class="gmail_quote">On Jan 6, 2017 20:28, "Ralf Gommers" <<a href="mailto:ralf.gommers@gmail.com" target="_blank">ralf.gommers@gmail.com</a>> wrote:<br type="attribution"><blockquote class="m_4162494620655003841m_6016942110675579434m_4172525355717345352quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><div class="m_4162494620655003841m_6016942110675579434m_4172525355717345352quoted-text">On Sat, Jan 7, 2017 at 2:21 PM, CJ Carey <span dir="ltr"><<a href="mailto:perimosocordiae@gmail.com" target="_blank">perimosocordiae@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><span><br><div class="gmail_quote">On Fri, Jan 6, 2017 at 6:19 PM, Ralf Gommers <span dir="ltr"><<a href="mailto:ralf.gommers@gmail.com" target="_blank">ralf.gommers@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_extra"><div class="gmail_quote"><div>This sounds like a reasonable idea. Timeline could be something like:<br><br></div><div>1. Now: create new package, deprecate np.matrix in docs.<br></div><div>2. In say 1.5 years: start issuing visible deprecation warnings in numpy<br></div><div>3. After 2020: remove matrix from numpy.<span class="m_4162494620655003841m_6016942110675579434m_4172525355717345352m_8655041963683139445m_-6206273829424229708gmail-HOEnZb"><font color="#888888"><br></font></span></div></div><span class="m_4162494620655003841m_6016942110675579434m_4172525355717345352m_8655041963683139445m_-6206273829424229708gmail-HOEnZb"><font color="#888888"><br></font></span></div><span class="m_4162494620655003841m_6016942110675579434m_4172525355717345352m_8655041963683139445m_-6206273829424229708gmail-HOEnZb"><font color="#888888"><div class="gmail_extra">Ralf</div></font></span></blockquote></div><br></span>I think this sounds reasonable, and reminds me of the deliberate deprecation process taken for scipy.weave. I guess we'll see how successful it was when 0.19 is released.</div><div class="gmail_extra"><br></div><div class="gmail_extra">The major problem I have with removing numpy matrices is the effect on scipy.sparse, which mostly-consistently mimics numpy.matrix semantics and often produces numpy.matrix results when densifying. The two are coupled tightly enough that if numpy matrices go away, all of the existing sparse matrix classes will have to go at the same time.</div><div class="gmail_extra"><br></div><div class="gmail_extra">I don't think that would be the end of the world, </div></div></blockquote><div><br></div></div><div>Not the end of the world literally, but the impact would be pretty major. I think we're stuck with scipy.sparse, and may at some point will add a new sparse *array* implementation next to it. For scipy we will have to add a dependency on the new npmatrix package or vendor it.<font color="#888888"><br><br></font></div><font color="#888888"><div>Ralf<br><br></div><div> <br></div></font><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="m_4162494620655003841m_6016942110675579434m_4172525355717345352quoted-text"><div dir="ltr"><div class="gmail_extra">but it's definitely something that should happen while scipy is still pre-1.0, if it's ever going to happen.</div></div>
<br></div><div class="m_4162494620655003841m_6016942110675579434m_4172525355717345352quoted-text">______________________________<wbr>_________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org" target="_blank">NumPy-Discussion@scipy.org</a><br>
<a href="https://mail.scipy.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.scipy.org/mailman<wbr>/listinfo/numpy-discussion</a><br>
<br></div></blockquote></div><br></div></div>
<br>______________________________<wbr>_________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org" target="_blank">NumPy-Discussion@scipy.org</a><br>
<a href="https://mail.scipy.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.scipy.org/mailman<wbr>/listinfo/numpy-discussion</a><br>
<br></blockquote></div><br></div></div></div></div><div class="gmail_extra" dir="auto">So what about this:</div><div class="gmail_extra" dir="auto"><br></div><div class="gmail_extra" dir="auto">1. Create a sparse array class</div><div class="gmail_extra" dir="auto">2. (optional) Refactor the sparse matrix class to be based on the sparse array class (may not be feasible)<br></div><div class="gmail_extra">3. Copy the spare matrix class into the matrix package<br></div><div class="gmail_extra">4. Deprecate the scipy sparse matrix class<br></div><div class="gmail_extra">5. Remove the scipy sparse matrix class when the numpy matrix class<br></div></div></div></blockquote><div><br></div></div></div><div>It looks to me like we're getting a bit off track here. The sparse matrices in scipy are heavily used, and despite rough edges pretty good at what they do. Deprecating them is not a goal.<br><br></div><div>The actual goal for the exercise that started this thread (at least as I see it) is to remove np.matrix from numpy itself so users (that don't know the difference) will only use ndarrays. And the few users that prefer np.matrix for teaching can now switch because of @, so their preference should have disappeared.<br><br></div><div>To reach that goal, no deprecation or backwards incompatible changes to scipy.sparse are needed.<span class="HOEnZb"><font color="#888888"><br></font></span></div></div></div></div></blockquote><div><br></div><div>What is the way forward with sparse? That looks like the biggest blocker on the road to a matrix free NumPy. I don't see moving the matrix package elsewhere as a solution for that. <br><br></div><div>Chuck <br></div></div><br></div></div>