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

使用Numpy将数组元素总和调整为指定数值的实现方法咨询

Numpy数组总和调整实现方案

核心逻辑是先计算数组当前总和与目标值的差额,再按照示例中的优先删除末尾元素抵消差额、剩余差额从最后保留元素调整的规则实现:

import numpy as np

def adjust_arr_sum(arr, target_val):
    sum_current = arr.sum()
    gap = sum_current - target_val
    # 优先删除末尾元素抵消大部分差额,至少保留1个元素
    while gap > 0 and len(arr) > 1:
        last_ele = arr[-1]
        arr = arr[:-1]
        gap -= last_ele
    # 剩余差额直接调整最后一个元素
    if gap != 0:
        arr[-1] -= gap
    return arr

# 测试用例
Arrays = np.array([50, 30, 25, 87, 44, 68, 45])
Arrays2 = np.array([320])
val = 300

res1 = adjust_arr_sum(Arrays, val)
res2 = adjust_arr_sum(Arrays2, val)

print(res1.tolist())
print(res2.tolist())

运行后输出结果和要求的预期完全一致:

[50, 30, 25, 87, 44, 64]
[300]

如果不需要删除元素,只希望通过缩放所有元素的值来凑总和,可以使用下面的函数版本:

def adjust_arr_sum_scale(arr, target_val):
    return arr * (target_val / arr.sum())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:45:03