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

Python中使用Numpy对矩阵指定行/列进行移位操作的方法是什么?

Numpy实现矩阵指定行/列移位操作

直接用Numpy内置的np.roll()函数即可实现循环移位效果,以下是针对你需求的实现方案:

前置准备

首先导入Numpy并构造示例矩阵:

import numpy as np

# 示例矩阵
mat = np.array([[1, 2], [3, 4]])
print("原始矩阵:\n", mat)

1. 实现指定行移位

你需求中是对第2行(索引为1)执行右移1位的操作,代码如下:

# 指定要移位的行索引、移位步数
row_idx = 1
shift_step = 1

# 对指定行执行循环右移,赋值回原矩阵
mat[row_idx] = np.roll(mat[row_idx], shift=shift_step)
print("行移位后矩阵:\n", mat)

输出结果和你要求的一致:

[[1 2]
 [4 3]]

2. 实现指定列移位

你需求中是对第2列(索引为1)执行下移1位的操作,代码如下:

# 先重置回原始矩阵
mat = np.array([[1, 2], [3, 4]])

# 指定要移位的列索引、移位步数
col_idx = 1
shift_step = 1

# 对指定列执行循环下移,赋值回原矩阵
mat[:, col_idx] = np.roll(mat[:, col_idx], shift=shift_step)
print("列移位后矩阵:\n", mat)

输出结果和你要求的一致:

[[1 4]
 [3 2]]

通用封装函数

你可以直接用下面的封装函数,灵活调整移位方向、操作维度、移位步数:

def matrix_shift(mat, axis, idx, shift_step):
    """
    参数说明:
    mat: 输入的Numpy矩阵
    axis: 操作维度,0=行操作,1=列操作
    idx: 要操作的行/列索引
    shift_step: 移位步数,正数为右/下移,负数为左/上移
    """
    new_mat = mat.copy()
    if axis == 0:
        new_mat[idx] = np.roll(new_mat[idx], shift_step)
    elif axis == 1:
        new_mat[:, idx] = np.roll(new_mat[:, idx], shift_step)
    return new_mat

# 测试行移位
mat = np.array([[1,2],[3,4]])
print(matrix_shift(mat, axis=0, idx=1, shift_step=1))
# 测试列移位
print(matrix_shift(mat, axis=1, idx=1, shift_step=1))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:06:04