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

如何在Python中实现奇偶索引交替加减的周期性动态计算?

问题解决:数组按周期执行加减操作

需求说明

  • 数组偶数索引元素执行加法,奇数索引元素执行减法
  • 以6次为迭代周期,对应操作依次为+10、-20、+30、-40、+50、-60,周期循环执行

原始数组代码

import numpy as np

# 修正原代码语法错误,保留基础数值
AA = np.array([[9.27914],
              [9.33246],
              [9.26303],
              [9.30597],
              [9.6594 ],
              [9.04283],
              [8.88866],
              [8.89956]])

预期结果

AA=np.array([
    [19.27914],
    [-10.66754],
    [39.26303],
    [-30.69403],
    [59.6594],
    [-50.95717],
    [18.88866],
    [-11.10044],
])

错误尝试代码

max_iter = 6
iter = 0
for i in range(len(AA)):
    if i % 2 == 0:
        AA[i][0] = AA[i][0] + (iter % max_iter)
    else:
       AA[i][0] = AA[i][0] - (iter % max_iter)
    iter += 10

问题分析与解决方案

错误代码的核心问题是完全误解了周期操作的对应逻辑:

  1. 没有匹配预设的固定操作数序列,而是用错误的取模逻辑生成操作值
  2. 混淆了索引周期与操作数的对应关系

正确实现方式(循环版)

直接定义周期操作序列,通过索引对6取模循环获取操作数:

import numpy as np

AA = np.array([[9.27914],
              [9.33246],
              [9.26303],
              [9.30597],
              [9.6594 ],
              [9.04283],
              [8.88866],
              [8.89956]])

# 定义6次周期的操作序列(减法等价于加负数)
operations = [10, -20, 30, -40, 50, -60]

for i in range(len(AA)):
    op = operations[i % 6]
    AA[i][0] += op

print(AA)

高效实现方式(numpy向量化版)

利用numpy的向量化操作提升效率:

import numpy as np

AA = np.array([[9.27914],
              [9.33246],
              [9.26303],
              [9.30597],
              [9.6594 ],
              [9.04283],
              [8.88866],
              [8.89956]])

operations = np.array([10, -20, 30, -40, 50, -60])
# 生成与数组长度匹配的循环操作数组
op_array = np.tile(operations, (len(AA) + len(operations) - 1) // len(operations))[:len(AA)]
# 执行向量化加法
AA.flat += op_array

print(AA)

以上两种方式均可得到预期结果。

内容的提问来源于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.20 01:22:22