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

不同NumPy数组之间能否交换行或列?如何实现?

操作可行性结论

该跨子数组交换行的操作完全可实现。你所持有的是形状为(2, 3, 5)的三维NumPy数组,轴0上的两个元素分别对应两个3行5列的二维子矩阵,直接通过NumPy索引赋值即可完成任意位置行的交换,无需额外工具。

具体实现方法

首先初始化原始数组:

import numpy as np

arr = np.array([
    [[0, 0, 1, 0, 0],
     [1, 0, 0, 0, 0],
     [0, 0, 1, 0, 0]],
    [[1, 0, 0, 0, 0],
     [0, 0, 1, 0, 0],
     [0, 0, 0, 1, 0]]
])

注意:NumPy索引从0开始计数,日常描述的第1行对应索引0,第2行对应索引1,第3行对应索引2,以下代码均按该规则对应你给出的三组预期输出。

  • 交换两个子数组的第3行(对应第一组预期输出)
# 用copy()拿到行的副本,避免后续赋值覆盖原始值
temp = arr[0, 2].copy()
arr[0, 2] = arr[1, 2]
arr[1, 2] = temp
  • 交换两个子数组的第2行(对应第二组预期输出)
temp = arr[0, 1].copy()
arr[0, 1] = arr[1, 1]
arr[1, 1] = temp
  • 交换两个子数组的前2行(对应第三组预期输出)
temp = arr[0, 0:2].copy()
arr[0, 0:2] = arr[1, 0:2]
arr[1, 0:2] = temp

关键注意点:存储临时交换值时必须调用.copy(),如果直接赋值temp = arr[0, 2]拿到的是原数组的视图,后续修改原数组时temp的值会同步变化,最终导致交换结果错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:01:40