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

如何按迭代次数累加numpy数组首索引元素(最大迭代次数为2)

解决Numpy数组首列元素与迭代次数相加的结果不符问题

问题背景

需求为将Numpy数组的首列元素与迭代次数相加,最大迭代次数设为2,但运行代码后结果不符合预期,尤其是第二行元素。

原代码

import numpy as np

a = np.array([[858,833,123],
[323,542,927],
[938,361,271],
[679,272,451]])

max_iter = 2
for i in range(max_iter):
    for j in range(len(a)):
        a[j][0] += i

实际运行结果

[[859 833 123]
 [324 542 927]
 [939 361 271]
 [680 272 451]]

预期结果

[[859,833,123],
 [325,542,927],
 [939,361,271],
 [681,272,451]]

问题分析

原代码的逻辑是外层循环遍历迭代次数i(取值0、1),每次迭代给所有行的首列元素加i。第一次i=0,所有元素加0无变化;第二次i=1,所有元素加1,最终每个首列元素只累加了1,这和预期中部分元素累加2的结果不符。

从预期结果可推断,实际需求应为行索引为奇数的元素(第2、4行,对应索引1、3)首列加2,行索引为偶数的元素(第1、3行,对应索引0、2)首列加1。

修正代码

以下代码可实现预期结果:

import numpy as np

a = np.array([[858,833,123],
[323,542,927],
[938,361,271],
[679,272,451]])

max_iter = 2
for j in range(len(a)):
    # 奇数行加max_iter,偶数行加1
    add_val = max_iter if j % 2 == 1 else 1
    a[j][0] += add_val

运行后得到的结果与预期一致:

[[859 833 123]
 [325 542 927]
 [939 361 271]
 [681 272 451]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 02:00:40