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

请求协助:完善实现列表相邻奇偶元素交换的Numpy代码

问题

需要将数组[1, 2, 3, 4, ..., 99, 100](由np.arange(1,101)生成)中所有相邻的奇偶数字交换位置,预期结果为[2, 1, 4, 3, ..., 100, 99]。现有代码运行后偶数位置元素变为0,需完善代码实现需求:

import numpy as np
data=np.arange(1,101,dtype=int) 
for i in range(len(data)): 
    if(i%2==1): 
        data[i]= # 此处代码缺失

print(data)
解决方案

方法1:修正循环逻辑

原代码的问题在于直接对data[i]赋值时未保留前一个元素的原始值,且未完成交换操作。我们只需遍历所有奇数索引(从1开始,步长2),将当前元素与前一个元素交换即可:

import numpy as np
data = np.arange(1, 101, dtype=int)
for i in range(1, len(data), 2):
    # 交换当前索引i和前一个索引i-1的元素
    data[i-1], data[i] = data[i], data[i-1]

print(data)

方法2:Numpy向量化操作(更高效)

利用Numpy的切片特性可以避免循环,直接完成批量交换,性能更优:

import numpy as np
data = np.arange(1, 101, dtype=int)
# 提取偶数索引和奇数索引的元素并交换
data[::2], data[1::2] = data[1::2], data[::2].copy()

print(data)

说明:data[::2]选取所有偶数索引(0,2,4...)的元素,data[1::2]选取所有奇数索引(1,3,5...)的元素,直接交换两者即可完成相邻奇偶元素的位置互换。使用.copy()是为了避免Numpy的视图引用导致的赋值异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:15:54