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

如何在NumPy中实现矩阵行的动态重复而非统一重复?

按指定顺序动态重复矩阵的实现方案

现有代码中np.repeat(pt, repeats=l, axis=0)会将pt的每一行连续重复对应次数,最终输出是[pt[0], pt[0], pt[1], pt[1], pt[1], pt[2], ...],这和你期望的“循环遍历行并填充直到满足重复次数”的顺序不符。

要实现目标输出顺序(按原矩阵行的循环顺序,逐行填充直到每行达到指定重复次数),可以通过生成符合要求的索引数组,再用索引提取pt的行来实现:

import numpy as np

p = np.array([[2, 2, 2], [2, 2, 2], [2, 2, 2]])
t = np.array([[9],[6],[3]])
l = [2, 3, 4]

# 计算pt矩阵
pt = np.multiply(p, t)

# 生成符合要求的索引数组
max_rep = max(l)
# 创建掩码:判断每行在第i次循环时是否需要被包含
mask = np.arange(max_rep) < np.array(l)[:, np.newaxis]
# 提取掩码为True的行索引,按循环顺序排列
indices = np.where(mask.T)[1]

# 根据索引获取结果
result = pt[indices]
print(result)

运行上述代码后,输出将与你期望的一致:

[[18 18 18]
 [12 12 12]
 [ 6  6  6]
 [18 18 18]
 [12 12 12]
 [ 6  6  6]
 [12 12 12]
 [ 6  6  6]
 [ 6  6  6]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 08:12:36