如何对shape为(10296,6)的2D array交换每个子数组的最后两个元素
实现方法
根据你使用的数据结构不同,有两种常用实现方式:
如果你用的是NumPy数组(你提到了shape属性,大概率是该场景)
直接用NumPy高级索引即可完成批量交换,无需循环,执行效率最高:
import numpy as np # a为你原始的shape=(10296, 6)的数组 # 注:NumPy索引从0开始,第5位对应索引4,第6位对应索引5 a[:, [4, 5]] = a[:, [5, 4]]
以上操作为原地修改,不需要额外占用内存空间。
如果你用的是原生Python二维列表
遍历每个子数组交换最后两位即可:
for sub_list in a: # 直接交换倒数第一位和倒数第二位元素 sub_list[-1], sub_list[-2] = sub_list[-2], sub_list[-1]
该方法同样为原地修改,应对1万+的数据量性能完全足够。
内容的提问来源于stack exchange,提问作者Asbjoern Lund
相关产品推荐
相关产品推荐

