`MaskedArray`s still share mask on copy
Open
Nobody has claimed this yet.
component: numpy.ma
- Dominant language
- Python
- Stars
- 32.8k
- Forks
- 12.8k
- Avg merge
- 1d 7h
- Merged PRs (30d)
- 197
Description
There seems to be a bug where MaskedArrays will still have their sharedmask flag set after copying. However, the mask is no longer shared as a copy has been made. A brief code example below demonstrates the problem.
import numpy as np
a = np.zeros((2,3))
a = np.ma.masked_array(a, np.ma.getmaskarray(a))
b = a[...]
assert b.mask.base is a.mask
assert b.sharedmask
b = b.copy()
assert b.mask.base is not a.mask
assert not b.sharedmask # Assertion fails.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the failure using the Python example in the issue, then trace the MaskedArray copy path and its sharedmask handling. Add a regression test for the shown assertions and verify that copying leaves the mask unshared and sharedmask unset.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- data
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100