Numpy问题:如何由一维整数数组生成对应重复次数与数值的新数组
实现方案
核心思路
直接使用Numpy内置的repeat方法即可一步完成,该方法支持为每个元素指定独立的重复次数,刚好匹配你的需求:
- 第一步计算每个a元素对应要填充的分段值:
CONSTANT / 对应a元素 - 第二步将每个分段值重复
对应a元素次,拼接后即为目标数组b
完整代码示例
import numpy as np # 输入参数 a = np.array([2,3,3,4]) CONSTANT = 120 # 生成目标数组 segment_values = CONSTANT / a b = np.repeat(segment_values, a) # 如果需要输出整数类型,可以加astype转换 # b = np.repeat(segment_values, a).astype(int) print(b)
输出结果:
array([60, 60, 40, 40, 40, 40, 40, 40, 30, 30, 30, 30])
纯Python实现(可选,适合小规模数组)
如果不想依赖Numpy,也可以用列表推导实现:
a = [2,3,3,4] CONSTANT = 120 b = [val for num in a for val in [CONSTANT/num]*num] # 转整数的话可以替换为 [CONSTANT//num]*num
内容的提问来源于stack exchange,提问作者Alex Parthemer
相关产品推荐
相关产品推荐

