html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue
https://github.com/pydata/xarray/issues/6517#issuecomment-1110354387,https://api.github.com/repos/pydata/xarray/issues/6517,1110354387,IC_kwDOAMm_X85CLqnT,5635139,2022-04-26T23:48:44Z,2022-04-26T23:48:44Z,MEMBER,"I don't know this well — maybe others can comment — but the example checks out.
Would we take this as a PR? Is there a simpler way to express that logic?","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1216517115
https://github.com/pydata/xarray/issues/6517#issuecomment-1110353767,https://api.github.com/repos/pydata/xarray/issues/6517,1110353767,IC_kwDOAMm_X85CLqdn,5635139,2022-04-26T23:47:14Z,2022-04-26T23:47:14Z,MEMBER,"For others, here's the diff:
```diff
diff --git ""indexing.original.py"" ""indexing.patched.py""
--- ""indexing.original.py""
+++ ""indexing.patched.py""
@@ -709,8 +709,12 @@ def explicit_indexing_adapter(
""""""
raw_key, numpy_indices = decompose_indexer(key, shape, indexing_support)
result = raw_indexing_method(raw_key.tuple)
- if numpy_indices.tuple:
- result = NumpyIndexingAdapter(np.asarray(result))[numpy_indices]
+ if numpy_indices.tuple and (not isinstance(result, np.ndarray)
+ or not all(i == slice(None, None, None) for i in numpy_indices.tuple)):
+ # The conditions within parentehses are to avoid unnecessary array slice/view-creation
+ # that would set flags['OWNDATA'] to False for no reason.
+ # Index the loaded np.ndarray.
+ result = NumpyIndexingAdapter(np.asarray(result))[numpy_indices]
return result
@@ -1156,6 +1160,11 @@ class NumpyIndexingAdapter(ExplicitlyIndexedNDArrayMixin):
def __getitem__(self, key):
array, key = self._indexing_array_and_key(key)
+ if ((len(key) == len(array.shape) or (len(key) == len(array.shape) + 1 and key[-1] is ...))
+ and all(isinstance(i, slice) and i == slice(None, None, None) for i in key[:len(array.shape)])
+ and isinstance(array, np.ndarray)): # (The isinstance-check is because nputils.NumpyVIndexAdapter() has not been tested.)
+ # Avoid unnecessary array slice/view-creation that would set flags['OWNDATA'] to False for no reason.
+ return array
return array[key]
def __setitem__(self, key, value):
```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1216517115