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

如何用Numpy分别对频率求和?替代for loop实现指定结果

使用NumPy生成目标数组的解决方案

没问题!用NumPy实现这个需求非常简洁,核心就是利用numpy.repeat()这个专门处理元素重复的函数,完全替代for循环的逐次拼接操作。

实现代码

import numpy as np

# 定义目标数组中按顺序出现的元素,以及每个元素对应的重复次数
target_values = np.array([1, 2, 1, 2, 3, 1, 4, 1])
repeat_counts = np.array([3, 2, 1, 3, 2, 1, 1, 1])

# 生成结果数组
result_array = np.repeat(target_values, repeat_counts)

# 转换成列表格式和你需要的结果一致
print(result_array.tolist())  # 输出: [1, 1, 1, 2, 2, 1, 2, 2, 2, 3, 3, 1, 4, 1]

原理说明

  • np.repeat()是NumPy的向量化操作函数,它会遍历target_values中的每个元素,按照repeat_counts中对应的次数进行重复,最后自动拼接成一个连续的数组。
  • 相比for循环的逐次添加,这种方式在处理大规模数据时效率会高很多——因为NumPy的向量化操作是底层用C实现的,避免了Python循环的额外开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:07:19