修复Python错误IndexError: Invalid Index to Scalar Variable

IndexError太常见了,特别是当你不熟悉numpy数组的时候。索引是数组中元素的位置。

当我们有一个简单的数组时,这很容易,但是当维度增加时,数组也变得复杂。当数组的维数增加时,索引也会增加。

假设当你有一个简单的数组时,你需要一个索引来访问元素,而在二维数组中,你需要两个索引。

一维和二维数组的示例:

One_D = [1,2,3,4,5]
print(One_D[0]) #--> 1
two_D = [[1,2,3],
         [4,5,6]]
print(two_D[1][0]) #--> 4

输出:

1
4

什么是在Python中IndexError: invalid index to scalar variable 在Python中

Python中的IndexError: invalid index to scalar variable发生在你误用numpy数组的索引时。假设我们有一维的arr

import numpy as npy
arr = npy.array([1,2,3,4,5])
print(arr[0][1])

输出:

IndexError: invalid index to scalar variable.

在上面的例子中,数组arr只需要一个索引,但是我们试图访问具有两个索引[0][1]的元素,这是不存在的。因此,它抛出了IndexError: invalid index to scalar variable

修复在Python中IndexError: invalid index to scalar variable 在Python中

修复IndexError过于简单和容易;错误本身是不言自明的;它告诉我们问题出在索引上,你提供了一个无效的索引来访问元素。

我们需要根据数组的性质提供正确的索引。让我们修复上述程序的IndexError

import numpy as npy
arr = npy.array([1,2,3,4,5])
print(arr[3])

输出:

4

在2D Numpy Arrays中修复 IndexError: invalid index to scalar variable 

当你理解了数组的工作原理,那么二维就不是理解索引的大问题了,你就可以开始了。

让我们以二维numpy数组为例。

import numpy as npy
# creating a 2-D array
arr = npy.array([[1,2,3],
                 [4,5,6]])
# with 2 rows and 3 columns
print(arr.shape)
# arr[2nd row] [3rd column]
print(arr[1][2])
#print(arr[1][2][3]) --> IndexError: invalid index to scalar variable.

输出:

(2, 3)
6

在这个例子中,我们有一个二维数组arr,其形状是(2,3)意味着它有两行和3列,我们知道在计算机编程语言中,索引以0开始,它意味着1

因此索引arr[1][2]意味着访问第2行第3列的阵列arr元素,其为6

同样,如果你为arr[1][2][3]数组提供了无效的索引,比如arr3索引而不是2,这将抛出IndexError: invalid index to scalar variable,因为该位置不存在于arr数组中。