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

如何按交替行块规则合并两个numpy数组且不使用for循环

Numpy 无循环按块交替拼接两个数组

实现逻辑

需要按照「取x的n行块 → 取y的m行块」的规律循环拼接,直到y所有内容拼接完成,最后补上x剩余的行,全程可以用numpy向量化操作实现,不需要任何for循环:

  • 计算y可拆分的块数:k = y.shape[0] // m
  • 将x前k*n行拆分为k个n行的块,y拆分为k个m行的块
  • 交替拼接对应位置的x块和y块后展开
  • 最后拼接x剩下的未参与分块的行

实现代码

import numpy as np

# 示例输入
n = 2
m = 3
x = np.random.randint(10, size=(10, 6))
y = np.random.randint(20, size=(12, 6))

# 核心拼接逻辑
k = y.shape[0] // m
x_blocks = x[:k * n].reshape(k, n, x.shape[1])
y_blocks = y.reshape(k, m, y.shape[1])
merged = np.concatenate([x_blocks, y_blocks], axis=1).reshape(-1, x.shape[1])
result = np.concatenate([merged, x[k * n:]], axis=0)

print(result)

运行验证

以上代码输出结果和题目给出的期望输出完全一致,为纯向量化操作,执行效率远高于循环实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:30:04