[Numpy-discussion] Add guaranteed no-copy to array creation and reshape?

Feng Yu rainwoodman at gmail.com
Thu Jan 10 14:21:17 EST 2019


Hi Todd,

I agree a flag is more suitable than classes.

I would add another bonus of a flag than a function argument is to avoid
massive contamination of function signatures for a global variation of
behavior that affects many functions.

Yu

On Wed, Jan 9, 2019 at 11:34 PM Todd <toddrjen at gmail.com> wrote:

> On Mon, Jan 7, 2019, 14:22 Feng Yu <rainwoodman at gmail.com wrote:
>
>> Hi,
>>
>> Was it ever brought up the possibility of a new array class (ndrefonly,
>> ndview) that is strictly no copy?
>>
>> All operations on ndrefonly will return ndrefonly and if the operation
>> cannot be completed without making a copy, it shall throw an error.
>>
>> On the implementation there are two choices if we use subclasses:
>>
>> - ndrefonly can be a subclass of ndarray. The pattern would be subclass
>> limiting functionality of super, but ndrefonly is a ndarray.
>> - ndarray as a subclass of ndarray. Subclass supplements functionality of
>> super. : ndarray will not throw an error when a copy is necessary. However
>> ndarray is not a ndarray.
>>
>> If we want to be wild they do not even need to be subclasses of each
>> other, or maybe they shall both be subclasses of something more
>> fundamental.
>>
>> - Yu
>>
>
> I would prefer a flag for this.  Someone can make an array read-only by
> setting `arr.flags.writable=False`.  So along those lines, we could have a
> `arr.flags.copyable` flag that if set to `False` would result in an error
> of any operation tried to copy the data.
>
>> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at python.org
> https://mail.python.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20190110/b6056473/attachment.html>


More information about the NumPy-Discussion mailing list