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]
一旦声明了二维数组,就可以使用两个索引来访问嵌套数组中的项。
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”。 要解决此错误,请声明一个二维数组或更正索引访问器。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。