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

如何按步长拆分NumPy数组?附示例说明

按步长拆分NumPy数组的方法

要实现按指定步长拆分NumPy数组,核心思路是利用数组的索引切片或者**重塑(reshape)+转置(transpose)**操作,下面结合你的示例具体说明:

示例1:数值数组拆分

原数组:[3, 0, 5, 0, 7, 0, 3, 1],目标拆分为两组,每组取原数组中间隔1个元素的项(步长为2)。

方法1:直接索引切片

import numpy as np

arr = np.array([3, 0, 5, 0, 7, 0, 3, 1])
# 取索引为0,2,4,6的元素
group1 = arr[::2]
# 取索引为1,3,5,7的元素
group2 = arr[1::2]

print(group1)  # 输出: [3 5 7 3]
print(group2)  # 输出: [0 0 0 1]

方法2:重塑+转置

如果数组长度刚好是步长的整数倍,也可以先重塑为二维数组,再转置拆分:

arr = np.array([3, 0, 5, 0, 7, 0, 3, 1])
# 重塑为(2,4)的二维数组,再转置得到(4,2),最后按列拆分
groups = arr.reshape(2, -1).T
group1, group2 = groups[:,0], groups[:,1]

print(group1)  # 输出: [3 5 7 3]
print(group2)  # 输出: [0 0 0 1]

示例2:字符串数组拆分

原数组:['a1', 'a2', 'b1', 'b2'],目标拆分为['a1', 'b1']和['a2', 'b2']。

直接用索引切片即可实现:

arr = np.array(['a1', 'a2', 'b1', 'b2'])
group1 = arr[::2]
group2 = arr[1::2]

print(group1)  # 输出: ['a1' 'b1']
print(group2)  # 输出: ['a2' 'b2']

通用说明

  • 当步长为n时,要拆分为n组,第i组(从0开始计数)可以用arr[i::n]获取
  • 如果数组长度不是步长的整数倍,索引切片会自动截断到数组末尾,不会报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 05:24:11