如何按步长拆分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
相关产品推荐
相关产品推荐

