如何将NumPy数组拆分为不等长的多个子数组?
最优实现方式:用
np.split()一键搞定 嘿,这个需求其实用NumPy自带的np.split()就能轻松实现,而且这是最简洁高效的原生方案~
直接上代码:
import numpy as np x = np.array([1, 2, 3, 99, 99, 3, 2, 1]) # 通过指定拆分点索引,一次性拆分成三个不等长子数组 x1, x2, x3 = np.split(x, [3, 5]) print(x1) # 输出: array([1, 2, 3]) print(x2) # 输出: array([99, 99]) print(x3) # 输出: array([3, 2, 1])
为什么这是最优选择?
- 原生高效:
np.split()是NumPy底层优化过的函数,比手动写多次切片的性能更优,处理大规模数组时优势更明显。 - 逻辑清晰:传入的
[3,5]是拆分点的索引,意思是在原数组的索引3、索引5位置各切一刀,按左闭右开的规则分成三个部分:- 从开头到索引3(不含3):
x[:3]→ 对应x1 - 从索引3到索引5(不含5):
x[3:5]→ 对应x2 - 从索引5到结尾:
x[5:]→ 对应x3
- 从开头到索引3(不含3):
当然,如果你偏好手动切片也能实现,但代码会更零散:
x1 = x[:3] x2 = x[3:5] x3 = x[5:]
这种方式适合简单场景,但子数组数量变多的时候,np.split()的可维护性会强很多。
内容的提问来源于stack exchange,提问作者user9061464
相关产品推荐
相关产品推荐

