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

如何使用Numpy按指定行数切割二维数组?

如何用Numpy将大型二维数组按固定行数切割为多个小数组

嘿,作为Numpy和数据分析领域的新手,你提的这个需求其实非常普遍,实现起来也很简单!下面我会结合你给出的数组,用两种直观的方法帮你完成按每n行切割的操作,以你说的每3行切割一次为例:


首先,先把你提供的大型数组转换成Numpy数组(这是操作的前提):

import numpy as np

# 你的原始二维数组
arr = np.array([
    [24.47590959, 148.14814815, 185.11662347, 377.92894936, 345.78146611],
    [24.74543137, 147.49262537, 185.7959032, 375.93984962, 346.86090878],
    [23.9300286, 144.6131598, 182.99098769, 376.08123355, 356.31569571],
    [24.68922439, 145.01160093, 181.35654697, 382.11692778, 363.30608538],
    [24.16976845, 142.98991921, 183.0328544, 355.68202027, 355.74528637],
    [23.66695856, 139.94821916, 181.78512998, 352.4539607, 348.73583261],
    [23.66219845, 137.08958805, 181.34010336, 345.84125886, 347.94711204],
    [23.53356475, 135.34546931, 179.85611511, 352.82702655, 350.32404975],
    [23.46866933, 136.16557734, 180.261379, 354.29583702, 366.703337],
    [23.46564044, 133.71665441, 179.09913137, 346.08063679, 358.48718408],
    [23.65184484, 135.34546931, 178.30079344, 354.79865177, 352.0506953],
    [22.55961378, 136.23050201, 176.41351328, 358.93754487, 342.52440486],
    [22.34936528, 135.92496942, 177.65144786, 362.84470247, 344.64931932],
    [22.6072999, 137.04262025, 176.64723547, 361.20642947, 347.82608696],
    [22.2585779, 133.32444504, 174.77934108, 357.97386791, 329.97855139],
    [21.62162162, 128.09017548, 173.05529117, 360.94567768, 333.05578684],
    [21.40983782, 128.44390213, 178.57142857, 370.64492216, 328.19166393],
    [20.8040776, 127.4941034, 182.34865062, 369.07178446, 333.72267646],
    [20.83333333, 127.9590531, 186.06381989, 386.32412594, 325.99837001],
    [20.08475768, 129.11555842, 184.55292055, 380.22813688, 315.95576619],
    [19.86531318, 128.86597938, 186.75880101, 377.71482531, 309.78934325],
    [20.47564933, 130.76168683, 189.35807612, 374.25149701, 321.64683178],
    [20.25090876, 127.68945924, 189.5195679, 391.38943249, 332.55736615]
])

方法一:循环切片(直观易懂,适合新手)

这种方法通过循环遍历数组的行索引,每次截取n行的子数组,非常容易理解:

n = 3  # 每3行切割一次
split_chunks = []

# 从0开始,步长为n,遍历所有行索引
for i in range(0, arr.shape[0], n):
    # 截取从i到i+n的行(如果剩余行数不足n,会自动取到最后一行)
    chunk = arr[i:i+n]
    split_chunks.append(chunk)
    # 打印每一个切割后的小数组(和你预期的效果一致)
    print(chunk)
    print("---")

运行后,你会得到和你预期完全一致的输出:前3行一个块,接下来3行一个块,最后剩余的2行也会作为一个独立的块。

方法二:使用Numpy内置的array_split(简洁高效)

Numpy提供了专门的数组分割函数array_split,可以直接按指定的块数分割数组,不需要手动写循环:

n = 3  # 每3行切割一次
# 计算需要分割成多少块:向上取整总行数/n
num_chunks = (arr.shape[0] + n - 1) // n
# 按行分割数组(axis=0表示按行分割)
split_chunks = np.array_split(arr, num_chunks, axis=0)

# 遍历打印每个块
for chunk in split_chunks:
    print(chunk)
    print("---")

这个方法的优势是代码更简洁,而且Numpy内置函数的执行效率更高,适合处理非常大的数组。如果你的数组行数刚好是n的倍数,也可以用np.split替代np.array_split,效果是一样的。


内容的提问来源于stack exchange,提问作者lee.edward01

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:28:33