IndexError:索引 0 超出了大小为 0 的轴 0 的范围
IndexError: index 0 is out of bounds for axis 0 with size 0
当我们尝试访问空 numpy 数组的第一维中的第一项时,会出现 Python“IndexError:索引 0 超出轴 0 的范围,大小为 0”。
要解决该错误,请使用块或在通过索引访问数组之前try/except
检查数组的大小是否不等于。0
下面是错误如何发生的示例。
import numpy as np arr = np.array([]) print(arr.shape) # 👉️ (0,) print(arr.size) # 👉️ 0 # ⛔️ IndexError: index 0 is out of bounds for axis 0 with size 0 print(arr[0])
这是错误如何发生的另一个示例。
import numpy as np # 👇️ array of 0 rows and 0 columns arr = np.zeros((0, ), int) print(arr) # [] # ⛔️ IndexError: index 0 is out of bounds for axis 0 with size 0 print(arr[0])
我们试图访问导致错误的空数组中的第一个元素。
使用数组的shape
or属性size
您可以使用
shape
属性打印数组的形状 – 数组维度的元组。
import numpy as np arr = np.array([1, 2, 3]) print(arr.shape) # 👉️ (3,) print(arr.size) # 👉️ 3
size属性
可用于打印数组的大小(数组中元素的数量)。
请注意,NumPy 使用从零开始的索引 – 数组中的第一个元素的索引为0
.
检查数组的大小是否大于0
解决错误的一种方法是检查数组的大小是否大于0
访问其第一项之前的大小。
import numpy as np arr = np.array([]) if arr.size > 0: print(arr[0]) else: print('The array has a size of 0')
if
仅当数组的大小大于 时才运行该块0
,否则else
运行该块。
使用try/except
语句来处理错误
或者,您可以使用
try/except 语句来处理错误。
import numpy as np arr = np.array([]) try: print(arr[0]) except IndexError: print('The array is empty')
0
我们尝试访问引发异常的索引处的数组元素IndexError
。
您可以处理错误或使用块pass
中的关键字except
。
import numpy as np arr = np.array([]) try: print(arr[0]) except IndexError: pass
pass语句什么都不做,当语法上需要语句但程序不需要任何操作时使用。
确保数组有正确的维度
声明 NumPy 数组时,请确保它具有正确的维度。
import numpy as np arr_1 = np.array([1, 2, 3]) print(arr_1.shape) # 👉️ (3,) print(arr_1.size) # 👉️ 3 print(arr_1[0]) # 👉️ 1 # ----------------------------------------- # 👇️ array with 2 rows and 3 columns # [[0 0 0] # [0 0 0]] arr_2 = np.zeros((2, 3), dtype=int) print(arr_2.shape) # (2, 3) print(arr_2[0]) # 👉️ [0 0 0] print(arr_2[0][0]) # 👉️ 0 print(arr_2.size) # 👉️ 6
轴0
是数组的第一维,该size
属性可用于获取数组中元素的数量。
创建一个0行N列的数组
确保您没有创建具有 0 行和 N 列的数组。
import numpy as np arr = np.zeros((0, 3), dtype=int) print(arr) # 👉️ [] print(arr.shape) # (0, 3) # ⛔️ IndexError: index 0 is out of bounds for axis 0 with size 0 print(arr[0])
示例中的数组的0
第一个维度有一个大小,因此尝试访问索引处的任何元素都会导致IndexError
.
相反,为行指定一个非零值。
import numpy as np # 👇️ array with 2 rows and 3 columns arr = np.zeros((2, 3), dtype=int) # [[0 0 0] # [0 0 0]] print(arr) print(arr.shape) # 👉️ (2, 3) print(arr[0]) # 👉️ [0 0 0]
代码示例创建一个包含 2 行和 3 列的数组。
访问索引不存在的非空数组
如果您在不存在的索引处访问非空数组,也会发生此错误。
import numpy as np arr = np.array([0]) print(arr[0]) # 👉️ 0 print(arr.shape) # 👉️ (1, ) print(arr.size) # 1 # ⛔️ IndexError: index 1 is out of bounds for axis 0 with size 1 print(arr[1])
示例中的数组只有一个元素。
NumPy 索引是从零开始的,因此访问索引处的数组1
会导致错误。
NumPy 数组中的第一个元素的索引为0
,最后一个元素的索引为-1
或len(array) - 1
。
您可以使用try/except
语句来处理错误。
import numpy as np arr = np.array([0]) try: print(arr[1]) except IndexError: # 👇️ this runs print('The specified index does NOT exist')
如果索引不存在,则IndexError
引发 an 然后由
except
块处理。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: