IndexError:索引 0 超出了大小为 0 的轴 0 的范围

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

indexerror 索引 0 超出轴 0 的范围,大小为 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])

我们试图访问导致错误的空数组中的第一个元素。

使用数组的shapeor属性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')

使用 try except 语句来处理错误

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,最后一个元素的索引为-1len(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块处理。

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: