如何复制NumPy二维数组中的第n行和第n列(以第3行/列为例)?
实现NumPy数组复制指定行和列的方法
要实现你需要的数组变换,可以分两步完成:先扩展每一行,插入重复的第3列元素;再插入重复的第3行,具体代码如下:
步骤1:导入NumPy并定义原数组
import numpy as np a = np.array([ [1, 2, 3, 1, 2, 3], [2, 3, 4, 2, 3, 4], [3, 4, 5, 3, 4, 5], [4, 5, 6, 4, 5, 6] ])
步骤2:扩展列,复制第3列到指定位置
观察目标数组的行结构:每一行是原行的前3列 + 第3列元素 + 后3列 + 第3列元素。我们可以用np.hstack拼接实现:
# 提取第3列(索引为2,NumPy从0开始计数),保持列向量形式 col_dup = a[:, 2:3] # 拼接生成扩展列后的数组 expanded_cols = np.hstack([a[:, :3], col_dup, a[:, 3:], col_dup])
步骤3:插入重复的第3行
目标数组在原第3行(索引2)后新增了一行相同的内容,用np.vstack拼接即可:
# 提取要复制的行 row_dup = expanded_cols[2:3, :] # 拼接生成最终数组b b = np.vstack([expanded_cols[:3, :], row_dup, expanded_cols[3:, :]])
验证结果
运行后b的值与你期望的完全一致:
print(b) # 输出: # [[1 2 3 3 1 2 3 3] # [2 3 4 4 2 3 4 4] # [3 4 5 5 3 4 5 5] # [3 4 5 5 3 4 5 5] # [4 5 6 6 4 5 6 6]]
内容的提问来源于stack exchange,提问作者anrod
相关产品推荐
相关产品推荐

