On Wednesday, March 7, 2012, Neal Becker <ndbecker2@gmail.com> wrote:
> Charles R Harris wrote:
>
>> On Wed, Mar 7, 2012 at 1:05 PM, Neal Becker <ndbecker2@gmail.com> wrote:
>>
>>> I'm wondering what is the use for the ignored data feature?
>>>
>>> I can use:
>>>
>>> A[valid_A_indexes] = whatever
>>>
>>> to process only the 'non-ignored' portions of A. So at least some simple
>>> cases
>>> of ignored data are already supported without introducing a new type.
>>>
>>> OTOH:
>>>
>>> w = A[valid_A_indexes]
>>>
>>> will copy A's data, and subsequent use of
>>>
>>> w[:] = something
>>>
>>> will not update A.
>>>
>>> Is this the reason for wanting the ignored data feature?
>>>
>>
>> Suppose you are working with plotted data and want to turn points on/off by
>> clicking on them interactively to see how that affects a fit. Why make
>> multiple copies, change sizes, destroy data, and all that nonsense? Just
>> have the click update the mask and redraw.
>>
>> Chuck
>
> But does
>
> some_func (A[valid_data_mask])
>
> actually perform a copy?
>
>
Yes! If it isn't sliced, or accessed by a scalar index, then you are given a copy. Fancy indexing and Boolean indexing will not return a view.
Note that assignments to a Boolean-indexed array by a scalar is special-cased. I.e.,
A[valid_points] = 5
will do what you expect. But,
A[valid_points] += 5
may not, IIRC.
Ben Root