You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中使用for循环实现numpy数组相加报IndexError索引越界

问题描述

仅使用for循环实现两个numpy数组的逐元素相加操作时,代码运行抛出错误,无法得到预期计算结果。

原实现代码

# Adding two arrays using For loop
from numpy import *
arr1 = array([2, 6, 8, 9, 1])
arr2 = array([1, 2, 3, 4, 5])
arrSum = array([])
for i in range(5):
    arrSum[i] = arr1[i] + arr2[i]
print(arrSum)

运行报错信息

Traceback (most recent call last):
  File "g:\Python\First Project\main.py", line 241, in <module>
    arrSum[i] = arr1[i] + arr2[i]
IndexError: index 0 is out of bounds for axis 0 with size 0
错误原因
  • numpy数组的长度在初始化时就已固定,不支持像Python原生列表那样对不存在的索引位置直接赋值。
  • 原代码中arrSum = array([])创建的是长度为0的空数组,没有索引为0的元素存储位,循环第一次执行赋值操作时就会触发索引越界错误。
正确实现方案

提供两种符合「仅用for循环逐元素计算」要求的实现方式,运行后均能得到正确的相加结果[ 3 8 11 13 6]:

方案1:预分配等长numpy数组

提前创建和输入数组长度一致的numpy数组,再通过循环逐位赋值:

from numpy import *
arr1 = array([2, 6, 8, 9, 1])
arr2 = array([1, 2, 3, 4, 5])
# 预分配和输入数组等长的整型数组
arrSum = empty(len(arr1), dtype=int)
# 用数组实际长度做循环边界,可适配不同长度的输入数组
for i in range(len(arr1)):
    arrSum[i] = arr1[i] + arr2[i]
print(arrSum)

方案2:用列表暂存结果后转numpy数组

利用Python列表支持动态追加元素的特性,循环中先把计算结果存入列表,最后统一转为numpy数组:

from numpy import *
arr1 = array([2, 6, 8, 9, 1])
arr2 = array([1, 2, 3, 4, 5])
sum_result = []
for i in range(len(arr1)):
    sum_result.append(arr1[i] + arr2[i])
arrSum = array(sum_result)
print(arrSum)

内容的提问来源于stack exchange,提问作者user17260323

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 05:45:54