On Mon Jan 25 01:46:55 2016 GMT+0100, Juan Nunez-Iglesias wrote: > > Yeah, that is a real use case. I am not planning to remove the option, > > but it would be as a `readonly` keyword argument, which means you would > > need to make the code depend on the numpy version if you require a > > writable array [1]. > > > > [1] as_strided does not currently support arr.flags.writable = True for > its result array. > > Can you explain this in more detail? I'm writing to the result without > problem. Anyway, it only occurred to me after your response that the > deprecation path would be quite disruptive to downstream libraries, > including scikit-image. My feeling is that unless someone has been bitten > by this (?), the benefit does not outweigh the cost of deprecation. Perhaps > something to push to 2.0? >
Setting the writeable flag to true, when it is set false before does not work with the way as_strided works right now with a DummyArray. I guess it is because its base is somehow not an ndarray. It should be possible to try/except creating it with np.ndarray, then it would be possible in your usecase. I do not have experience of beeing badly bitten, myself. Would you think it is fine if setting the flag to true would work in your case? > On Sun, Jan 24, 2016 at 8:17 PM, Sebastian Berg <sebast...@sipsolutions.net> > wrote: > > > On So, 2016-01-24 at 13:00 +1100, Juan Nunez-Iglesias wrote: > > > I've used as_strided before to create an "endless" output array when > > > I didn't care about the result of an operation, just the side effect. > > > See eg here. So I would certainly like option to remain to get a > > > writeable array. In general, I'm sceptical about whether the benefits > > > outweigh the costs. > > > > Yeah, that is a real use case. I am not planning to remove the option, > > but it would be as a `readonly` keyword argument, which means you would > > need to make the code depend on the numpy version if you require a > > writable array [1]. > > This actually somewhat defeats the purpose of all of this, but > > `np.ndarray` can do this dummy thing for you I think, so you could get > > around that, but.... > > > > The purpose is that if you actually would use an as_strided array in > > your operation, the result is unpredictable (not just complicated). And > > while as_strided is IMO designed to be used by people who know what > > they are doing, I have a feeling it is being used quite a lot in > > general. > > > > We did a similar thing for the new `broadcast_to`, though I think there > > we decided to skip the readonly until complains happen. > > > > Actually there is one more thing I might do. And that is issue a > > UserWarning when new array quite likely points to invalid memory. > > > > - Sebastian > > > > > > [1] as_strided does not currently support arr.flags.writable = True for > > its result array. > > > > > > > On Sun, Jan 24, 2016 at 9:20 AM, Nathaniel Smith <n...@pobox.com> > > > wrote: > > > > On Sat, Jan 23, 2016 at 1:25 PM, Sebastian Berg > > > > <sebast...@sipsolutions.net> wrote: > > > > > > > > > > Hi all, > > > > > > > > > > I have just opened a PR, to make as_strided writeonly (as > > > > default). The > > > > > > > > I think you meant readonly :-) > > > > > > > > > reasoning for this change is that an `as_strided` array often > > > > have self > > > > > overlapping memory. However, writing to an array where multiple > > > > > elements have the identical memory address can be confusing, and > > > > the > > > > > results are typically unpredictable. > > > > > > > > > > Considering the danger, the proposal is to add a `readonly=True`. > > > > A > > > > > poweruser (who that function is designed for anyway), could thus > > > > still > > > > > get a writeable array. > > > > > > > > > > For the moment, writing to the result would raise a FutureWarning > > > > with > > > > > `readonly="warn"`. > > > > > > > > This should just be a deprecation warning, right? (Because > > > > switching > > > > an array from writeable->readonly might cause previously correct > > > > code > > > > to error out, but not to silently start returning different > > > > results.) > > > > > > > > > Do you agree with this, or would it be a major inconvenience? > > > > > > > > AFAIK the only use cases for as_strided involve self-overlap (for > > > > non-self-overlap you can generally use reshape / indexing / etc. > > > > and > > > > it's much simpler). So +1 from me. > > > > > > > > -n > > > > > > > > -- > > > > Nathaniel J. Smith -- https://vorpus.org > > > > _______________________________________________ > > > > 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 > > > > _______________________________________________ > > 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