首页 > 解决方案 > 从迭代最小化数组的函数中输出和整数

问题描述

我正在尝试构建一个函数(minSum)来最小化数组的总和,在任意数量的迭代中具有各种长度和值。

该函数包含两个参数 - 数组的名称 (num) 和修改的步骤数 (k)。对于每 k 步修改,该函数将从 num 数组中检索一个元素/整数,将其除以 2,并使用与检索到的索引位置相同的减半值的上限更新该数组。一旦达到 k 值,该函数应将数组的总和作为单个整数输出。

例如 - 如果我的数组 (num) 是 [10. 20. 7] 我将运行它超过 2 步 (k) 函数的输入将是 minSum(num, 2)。它将在 kstep 0 中将 10 除以一半,得到一个数组 (5, 20, 7) 它会在 kstep 0 中将 10 除以一半,得到一个数组 (5, 10, 7) 它会在 kstep 中将 10 除以一半0 导致 (5, 10, 4) 的数组(4 是 3.5 的上限)。其输出将是总和 0f 5, 10, 4 = 19。通过增加 k 值,我们应该能够将输出降低到较低的值。在任何情况下,我都可以使用下面的代码来实现我的目标,除了输出是单个整数(我们的测试系统系统只接收最终的数组)。这里有任何指示吗?谢谢!

import array as ar
import math
import numpy as np


#  1. INTEGER_ARRAY num
#  2. INTEGER k (number of steps of element removal, transformation and update)


def minSum(num, k):
    arr = np.array(num)
    i = 0
    idx = 0
    while i < k:
        for element in np.nditer(arr):
            thereduced = math.ceil(element/2)
            np.put(arr, [idx], thereduced)
            if i < arr.size-1:
                idx += 1
            thesum = int((sum(arr)))
            i = i+1         
    return thesum

标签: python-3.x

解决方案


sum() 方法返回单个值,因此您可以创建一个空数组,将“thesum”值放入数组中,并在函数末尾返回带有值的新数组,现在您的代码只是返回一个单个整数


推荐阅读