gpt4 book ai didi

python - 以特定方式组合数组元素并记录它

转载 作者:行者123 更新时间:2023-12-01 02:35:41 26 4
gpt4 key购买 nike

给我一​​个一维数字数组。

我需要遍历数组,添加每个连续元素以形成总和。一旦这个总和达到一定值,它就会形成新数组的第一个元素。然后重置总和并重复该过程,从而迭代整个数组。

例如,如果给出:[1,3,4,5,2,5,3]并要求最小总和为 5,新数组将是:[8,5,7]

显式:[1 + 3 + 4, 5, 2 + 5]

然后,我还需要记录该特定数组的元素组合方式:我需要采用相同长度的不同数组,并以与上面相同的方式组合元素。

例如给出数组[1,2,1,1,3,2,1]我需要输出[4,1,5]

显式:[1 + 2 + 1, 1, 3 + 2]

我已经用 i 循环和增量计数器完成了这个任务,但它非常难看。名为“record”的数组包含旧元素的数量,这些元素的总数构成新数组的每个元素,即 [3, 1, 2]

import numpy as np

def bin(array, min_sum):

num_points = len(array)

# Create empty output.
output = list()
record = list()

i = 0

while i < num_points:

sum = 0
j = 0

while sum < min_sum:

# Break out if it reaches end of data whilst in loop.
if i+j == num_points:
break

sum += array[i+j]

j += 1

output.append(sum)
record.append(j)

i += j

# The final data point does not reach the min sum.
del output[-1]

return output

if __name__ == "__main__":
array = [1, 3, 4, 5, 2, 5, 3]
print bin(array, 5)

最佳答案

我建议您简单地浏览一下列表。将其添加到像 the_sum 这样的累加器(不要使用 sum,因为它是内置的),并且如果 the_sum 达到的数字高于min_sum,将其相加,然后将 the_sum 重置为零。喜欢:

def bin(array, min_sum):
result = []
<b>the_sum = 0</b>
for elem in array:
<b>the_sum += elem</b>
<b>if the_sum >= min_sum:</b>
<b>result.append(the_sum)</b>
<b>the_sum = 0</b>
return result

涉及累加器的行以粗体显示。

我以与练习相同的方式组合另一个数组,但作为提示:使用额外的累加器zip同时迭代两个数组。

关于python - 以特定方式组合数组元素并记录它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46263539/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com