Python 中 IndexError: too many indices for array 错误
当我们在访问一维 numpy 数组时指定过多的索引值时,会出现 Python“IndexError: too many indices for array”。 要解决此错误,需要声明一个二维数组或更正索引访问器。
下面是一个产生上述错误的示例代码
import numpy as np
arr = np.array([1, 2, 3])
print(arr.shape) # 👉️ (3, ) 👈️ this is one-dimensional array
# ⛔️ IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed
print(arr[:, 0])
我们有一个一维 numpy
数组,但指定了 2 个导致错误的索引。
如果我们有一个一维数组,则可以使用单个索引或切片。
import numpy as np
arr = np.array([1, 2, 3])
print(arr[0]) # 👉️ 1
print(arr[0:2]) # 👉️ [1 2]
我们可以改为声明一个二维 numpy
数组。
import numpy as np
arr = np.array([[1, 2], [3, 4], [5, 6]])
print(arr.shape) # 👉️ (3, 2) 👈️ this is two-dimensional array
print(arr[:, 0]) # 👉️ [1 3 5]
上面的示例使用 2 个索引来获取每个嵌套数组的第一个元素。
我们可以打印您尝试索引的数组以检查您是否包含您期望的内容。
如果我们只有一个一维数组,请在访问它时使用单个索引,例如 arr[0]
或 arr[0:3]
。
错误的另一个常见原因是声明一个二维数组,其中并非所有嵌套数组都具有相同类型和大小的项目。
import numpy as np
# 👇️ declared one-dimensional array (second nested list has only 1 item)
arr = np.array([[1, 2], [3], [5, 6]])
print(arr.shape) # 👉️ (3,)
# ⛔️ IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed
print(arr[:, 0])
请注意
,第二个嵌套数组只有一项,因此我们最终声明了一个一维数组。
numpy
数组是一个表示固定大小项目的多维同构数组的对象。
如果我们向第二个嵌套数组添加第二个项目,我们将声明一个二维数组。
import numpy as np
arr = np.array([[1, 2], [3, 4], [5, 6]])
print(arr.shape) # 👉️ (3, 2)
print(arr[:, 0]) # 👉️ [1 3 5]
请注意
,数组的形状是(3, 2)
,而前面示例中的数组形状是(3,)
。
一旦声明了二维数组,就可以使用两个索引来访问嵌套数组中的项。
import numpy as np
arr = np.array([[1, 2], [3, 4], [5, 6]])
# ✅ 从前两个嵌套数组中获取第一项
print(arr[0:2, 0]) # 👉️ [1 3]
# ✅ 从前两个嵌套数组中获取最后一项
print(arr[0:2, -1]) # 👉️ [2 4]
总结
当我们在访问一维 numpy 数组时指定过多的索引值时,会出现 Python“IndexError: too many indices for array”。 要解决此错误,请声明一个二维数组或更正索引访问器。
相关文章
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串
在 Python Pandas 中使用 str.split 将字符串拆分为两个列表列
发布时间:2024/04/24 浏览次数:1124 分类:Python
-
本教程介绍如何使用 pandas str.split() 函数将字符串拆分为两个列表列。
在 Pandas 中将 Timedelta 转换为 Int
发布时间:2024/04/23 浏览次数:231 分类:Python
-
可以使用 Pandas 中的 dt 属性将 timedelta 转换为整数。
Python 中的 Pandas 插入方法
发布时间:2024/04/23 浏览次数:112 分类:Python
-
本教程介绍了如何在 Pandas DataFrame 中使用 insert 方法在 DataFrame 中插入一列。
使用 Python 将 Pandas DataFrame 保存为 HTML
发布时间:2024/04/21 浏览次数:106 分类:Python
-
本教程演示如何将 Pandas DataFrame 转换为 Python 中的 HTML 表格。
如何将 Python 字典转换为 Pandas DataFrame
发布时间:2024/04/20 浏览次数:73 分类:Python
-
本教程演示如何将 python 字典转换为 Pandas DataFrame,例如使用 Pandas DataFrame 构造函数或 from_dict 方法。
如何在 Pandas 中将 DataFrame 列转换为日期时间
发布时间:2024/04/20 浏览次数:101 分类:Python
-
本文介绍如何将 Pandas DataFrame 列转换为 Python 日期时间。