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

如何提取Numpy数组奇偶索引元素并垂直并排合并

Numpy提取奇偶索引行并合并的解决方案

问题纠正

你转置数组后用mat[1::2]提取的是原数组的奇数索引列,而非预期的奇数索引行——因为转置会交换数组的行和列,导致索引指向的维度变了。要提取原数组的奇数索引行(索引1、3),直接操作原数组即可:

import numpy as np

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

# 提取奇数索引行(索引1、3)
odd_rows = mat[1::2]
# 提取偶数索引行(索引0、2、4)
even_rows = mat[::2]

此时odd_rows就是你期望的结果:

array([[0, 1, 0, 0, 1],
       [0, 0, 0, 0, 0]])

生成最终输出

要得到目标数组,只需将提取的奇偶行分别转置(行转列),再水平合并:

# 转置奇偶行,将行转为列
odd_cols = odd_rows.T
even_cols = even_rows.T

# 水平合并两个数组
result = np.hstack((odd_cols, even_cols))

最终输出结果:

array([[0, 0, 1, 1, 1],
       [1, 0, 1, 0, 0],
       [0, 0, 0, 0, 1],
       [0, 0, 0, 1, 0],
       [1, 0, 0, 1, 1]])

步骤说明

  • mat[1::2]:从索引1开始,步长为2,提取原数组第1、3行(奇数索引行)。
  • mat[::2]:从索引0开始,步长为2,提取原数组第0、2、4行(偶数索引行)。
  • .T:转置数组,将行维度转换为列维度,让原本的2行5列、3行5列数组变为5行2列、5行3列。
  • np.hstack():水平拼接两个数组,得到5行5列的目标数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:25:20