diff options
author | DevinShanahan <dshanahan88@gmail.com> | 2020-07-18 07:25:26 -0600 |
---|---|---|
committer | DevinShanahan <dshanahan88@gmail.com> | 2020-07-18 07:25:26 -0600 |
commit | 734ee2c44e4e37745480afa537f1b8af75ea4422 (patch) | |
tree | 8555287b1ba27e075b95277268f4ece1167a9d31 /numpy/lib/function_base.py | |
parent | e8a3bfaa17b571c63fa4f3b81d8a914106ea7be2 (diff) | |
download | numpy-734ee2c44e4e37745480afa537f1b8af75ea4422.tar.gz |
ENH: extend delete single value optimization
Allow arrays of shape (1,) for delete's obj parameter to utilize the
optimization for a single value. See #16685.
Diffstat (limited to 'numpy/lib/function_base.py')
-rw-r--r-- | numpy/lib/function_base.py | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/numpy/lib/function_base.py b/numpy/lib/function_base.py index 1053598b1..99e06d5b8 100644 --- a/numpy/lib/function_base.py +++ b/numpy/lib/function_base.py @@ -4368,6 +4368,19 @@ def delete(arr, obj, axis=None): return new if isinstance(obj, (int, integer)) and not isinstance(obj, bool): + single_value = True + else: + single_value = False + _obj = obj + obj = np.asarray(obj) + if obj.size == 0 and not isinstance(_obj, np.ndarray): + obj = obj.astype(intp) + + if obj.shape == (1,): + obj = obj.item() + single_value = True + + if single_value: # optimization for a single value if (obj < -N or obj >= N): raise IndexError( @@ -4384,11 +4397,6 @@ def delete(arr, obj, axis=None): slobj2[axis] = slice(obj+1, None) new[tuple(slobj)] = arr[tuple(slobj2)] else: - _obj = obj - obj = np.asarray(obj) - if obj.size == 0 and not isinstance(_obj, np.ndarray): - obj = obj.astype(intp) - if obj.dtype == bool: if obj.shape != (N,): raise ValueError('boolean array argument obj to delete ' |