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

是否存在类似numpy.split的方法,返回numpy.ndarray而非列表?

解决方案

当数组可以被均匀分割时,**直接使用numpy.reshape**就能实现你要的效果,无需用np.split再堆叠,性能更优(因为reshape在内存连续时是视图操作,不复制数据)。

一维数组示例

针对你给出的场景:

import numpy as np
x = np.arange(9.0)
# 直接reshape为(分割份数, 每份元素数),用-1让numpy自动计算每份的元素数
print(x.reshape(3, -1))
# 输出:
# array([[0., 1., 2.],
#        [3., 4., 5.],
#        [6., 7., 8.]])

更高维数组的分割场景

如果是多维数组,比如要把形状为(6, 4)的二维数组按行分割成3份(每份2行),可以直接调整形状为(3, 2, 4):

arr = np.arange(24).reshape(6, 4)
split_arr = arr.reshape(3, 2, 4)
print(split_arr.shape)  # (3, 2, 4)

如果需要调整轴的顺序来匹配需求,比如把列分割后转为行排列的二维数组:

# 将(6,4)数组按列分割为4份,重组为(4,6)的数组
split_col_trans = arr.T.reshape(4, 6).T

为什么不用np.split?

np.split返回列表是因为它支持不均匀分割,而均匀分割的场景下,reshape是更高效的选择——它不需要创建多个子数组再堆叠,直接通过修改数组的形状元数据实现,性能远高于np.split + np.stack的组合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:55:15