如何将numpy数组拆分为长度不等的子数组?
拆分Numpy数组为不等长子数组
直接切片法(适用于简单拆分)
如果只是像示例里这样拆分成两个子数组,直接用索引切片最直观高效:
import numpy as np data = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]) split_result = [data[:8], data[8:]] print(split_result)
运行结果:
[array([0, 1, 2, 3, 4, 5, 6, 7]), array([ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17])]
通用拆分法(适用于多个不等长子数组)
如果需要拆分成更多不等长的子数组,可以用np.split(),传入分割索引位置的列表(注意不是子数组长度):
比如要拆成长度为3、5、10的三个子数组,先计算分割索引:3和3+5=8,再传入np.split():
import numpy as np data = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]) split_indices = [3, 8] split_result = np.split(data, split_indices) print(split_result)
运行结果:
[array([0, 1, 2]), array([3, 4, 5, 6, 7]), array([ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17])]
如果只有子数组长度,需要先把长度转换成累加的索引:比如长度列表[8,10],对应的索引就是[8](因为第一个子数组到索引8结束)。
内容的提问来源于stack exchange,提问作者Swani
相关产品推荐
相关产品推荐

