Hi all! I've been lurking on this discussion, and don't have too much to add except to encourage a fast deprecation: I can't wait for sparse matrices to have an element-wise multiply operator.
On 7 Jan 2017, 7:52 PM +1100, Ralf Gommers <ralf.gomm...@gmail.com>, wrote: > > > On Sat, Jan 7, 2017 at 9:39 PM, Nathaniel Smith <n...@pobox.com > (mailto:n...@pobox.com)> wrote: > > On Fri, Jan 6, 2017 at 11:59 PM, Ralf Gommers <ralf.gomm...@gmail.com > > (mailto:ralf.gomm...@gmail.com)> wrote: > > > > > > > > > On Sat, Jan 7, 2017 at 2:52 PM, Charles R Harris > > > <charlesr.har...@gmail.com (mailto:charlesr.har...@gmail.com)> > > > wrote: > > >> > > >> > > >> > > >> On Fri, Jan 6, 2017 at 6:37 PM, <josef.p...@gmail.com > > >> (mailto:josef.p...@gmail.com)> wrote: > > >>> > > >>> > > >>> > > >>> > > >>> On Fri, Jan 6, 2017 at 8:28 PM, Ralf Gommers <ralf.gomm...@gmail.com > > >>> (mailto:ralf.gomm...@gmail.com)> > > >>> wrote: > > >>>> > > >>>> > > >>>> > > >>>> On Sat, Jan 7, 2017 at 2:21 PM, CJ Carey <perimosocord...@gmail.com > > >>>> (mailto:perimosocord...@gmail.com)> > > >>>> wrote: > > >>>>> > > >>>>> > > >>>>> On Fri, Jan 6, 2017 at 6:19 PM, Ralf Gommers <ralf.gomm...@gmail.com > > >>>>> (mailto:ralf.gomm...@gmail.com)> > > >>>>> wrote: > > >>>>>> > > >>>>>> This sounds like a reasonable idea. Timeline could be something like: > > >>>>>> > > >>>>>> 1. Now: create new package, deprecate np.matrix in docs. > > >>>>>> 2. In say 1.5 years: start issuing visible deprecation warnings in > > >>>>>> numpy > > >>>>>> 3. After 2020: remove matrix from numpy. > > >>>>>> > > >>>>>> Ralf > > >>>>> > > >>>>> > > >>>>> 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. > > >>>>> > > >>>>> 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. > > >>>>> > > >>>>> I don't think that would be the end of the world, > > >>>> > > >>>> > > >>>> 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. > > >>> > > >>> > > >>> That sounds to me like moving maintenance of numpy.matrix from numpy to > > >>> scipy, if scipy.sparse is one of the main users and still depends on it. > > > > > > > > > Maintenance costs are pretty low, and are partly still for numpy (it has > > > to > > > keep subclasses like np.matrix working. I'm not too worried about the > > > effort. The purpose here is to remove np.matrix from numpy so beginners > > > will > > > never see it. Educating sparse matrix users is a lot easier, and there > > > are a > > > lot less such users. > > > > > >> > > >> What I was thinking was encouraging folks to use `arr.dot(...)` or `@` > > >> instead of `*` for matrix multiplication, keeping `*` for scalar > > >> multiplication. > > > > > > > > > I don't think that change in behavior of `*` is doable. > > > > I guess it would be technically possible to have matrix.__mul__ issue > > a deprecation warning before matrix.__init__ does, to try and > > encourage people to switch to using .dot and/or @, and thus make it > > easier to later port their code to regular arrays? > > Yes, but that's not very relevant. I'm saying "not doable" since after the > debacle with changing diag return to a view my understanding is we decided > that it's a bad idea to make changes that don't break code but return > different numerical results. There's no good way to work around that here. > > With something as widely used as np.matrix, you simply cannot rely on people > porting code. You just need to phase out np.matrix in a way that breaks code > but never changes behavior silently (even across multiple releases). > > Ralf > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > https://mail.scipy.org/mailman/listinfo/numpy-discussion
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org https://mail.scipy.org/mailman/listinfo/numpy-discussion