-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Avoid in-place multiplication of a large value to an array with small integer dtype #8867
Avoid in-place multiplication of a large value to an array with small integer dtype #8867
Conversation
for more information, see https://pre-commit.ci
Why is in-place multiplication a problem here? |
Quick response for a draft PR! My idea 5 minutes ago is that
will create a number larger than int8, which is strange. So I think we should create a new array instead with whatever numpy thinks is the best dtype. |
@@ -1848,9 +1848,10 @@ def _center_pixels(x): | |||
# missing data transparent. We therefore add an alpha channel if | |||
# there isn't one, and set it to transparent where data is masked. | |||
if z.shape[-1] == 3: | |||
alpha = np.ma.ones(z.shape[:2] + (1,), dtype=z.dtype) | |||
safe_dtype = np.promote_types(z.dtype, np.uint8) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The dtype should allow at least 0 and 255. But it will be converted in np.ma.concatenate
at some point anyway so I thought it's best to just figure it out early and initialize alpha
correctly.
Thanks for figuring this out! |
* main: (26 commits) [pre-commit.ci] pre-commit autoupdate (pydata#8900) Bump the actions group with 1 update (pydata#8896) New empty whatsnew entry (pydata#8899) Update reference to 'Weighted quantile estimators' (pydata#8898) 2024.03.0: Add whats-new (pydata#8891) Add typing to test_groupby.py (pydata#8890) Avoid in-place multiplication of a large value to an array with small integer dtype (pydata#8867) Check for aligned chunks when writing to existing variables (pydata#8459) Add dt.date to plottable types (pydata#8873) Optimize writes to existing Zarr stores. (pydata#8875) Allow multidimensional variable with same name as dim when constructing dataset via coords (pydata#8886) Don't allow overwriting indexes with region writes (pydata#8877) Migrate datatree.py module into xarray.core. (pydata#8789) warn and return bytes undecoded in case of UnicodeDecodeError in h5netcdf-backend (pydata#8874) groupby: Dispatch quantile to flox. (pydata#8720) Opt out of auto creating index variables (pydata#8711) Update docs on view / copies (pydata#8744) Handle .oindex and .vindex for the PandasMultiIndexingAdapter and PandasIndexingAdapter (pydata#8869) numpy 2.0 copy-keyword and trapz vs trapezoid (pydata#8865) upstream-dev CI: Fix interp and cumtrapz (pydata#8861) ...
Upstream numpy has become a bit more particular with which types you can use for inplace operations. This PR fixes
Some curious behaviors seen while debugging:
xref: #8844