When using np.delete an indexError is raise when an out-of-bounds index is used. When an out-of-bounds index is in a np.array used and the array is used as the argument in np.delete, why doesnt this then raise an indexError?
np.delete(np.array([0, 2, 4, 5, 6, 7, 8, 9]), 9)
this gives an index-error, as it should (index 9 is out of bounds)
while
np.delete(np.arange(0,5), np.array([9]))
and
np.delete(np.arange(0,5), (9,))
give:
array([0, 1, 2, 3, 4])
Note that delete does not occur in-place. If axis is None, out is a flattened array.
The numpy. delete() function returns a new array with the deletion of sub-arrays along with the mentioned axis. Return : An array with sub-array being deleted as per the mentioned object along a given axis.
The Python "IndexError: index 0 is out of bounds for axis 0 with size 0" occurs when we try to access the first item in the first dimension of an empty numpy array. To solve the error, use a try/except block or check if the array's size is not equal to 0 before accessing it at an index.
June 01, 2022. CWE-125 Out-of-Bounds Read is a type of software error that can occur when reading data from memory. This can happen if the program tries to read beyond the end of an array, for example.
This is a known "feature" and will be deprecated in later versions.
From the source of numpy:
# Test if there are out of bound indices, this is deprecated
inside_bounds = (obj < N) & (obj >= -N)
if not inside_bounds.all():
# 2013-09-24, 1.9
warnings.warn(
"in the future out of bounds indices will raise an error "
"instead of being ignored by `numpy.delete`.",
DeprecationWarning)
obj = obj[inside_bounds]
Enabling DeprecationWarning in python actually shows this warning. Ref
In [1]: import warnings
In [2]: warnings.simplefilter('always', DeprecationWarning)
In [3]: warnings.warn('test', DeprecationWarning)
C:\Users\u31492\AppData\Local\Continuum\Anaconda\Scripts\ipython-script.py:1: De
precationWarning: test
if __name__ == '__main__':
In [4]: import numpy as np
In [5]: np.delete(np.arange(0,5), np.array([9]))
C:\Users\u31492\AppData\Local\Continuum\Anaconda\lib\site-packages\numpy\lib\fun
ction_base.py:3869: DeprecationWarning: in the future out of bounds indices will
raise an error instead of being ignored by `numpy.delete`.
DeprecationWarning)
Out[5]: array([0, 1, 2, 3, 4])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With