【发布时间】:2015-08-10 09:02:11
【问题描述】:
我想根据列表中数字的累积总和创建新列表。输入是理想的 - 可以拆分为子集,每个子集的总和相等。子集的长度不相等。输入子集的数量。
输出的每个子集代表增量整数[0,1,2,3,...],它替换原始输入。整数的个数就是子集的个数。
示例:
number of subsets = 2
input = [1, 4, 5]
#cumsum = [1, 5, 10]
subsets = [1,5], [10]
output-subsets = [0,0], [1]
output = [0, 0, 1]
示例 1:
number of subsets = 4
input = [1, 2, 3, 4, 2, 5, 1, 6]
#cumsum = [1, 3, 6, 10, 12, 17, 18, 24]
subsets = [1,3,6], [10, 12],[17, 18], [24]
output-subsets = [0, 0, 0], [1, 1], [2, 2], [3]
output = [0, 0, 0, 1, 1, 2, 2, 3]
number of subsets = 2
input = [1, 2, 3, 4, 2, 5, 1, 6]
#cumsum = [1, 3, 6, 10, 12, 17, 18, 24]
subsets = [1, 3, 6, 10, 12],[17, 18, 24]
output-subsets = [0, 0, 0, 0, 0], [1, 1, 1]
output = [0, 0, 0, 0, 0, 1, 1, 1]
我尝试修改SO question:
def changelist(lis, t):
total = 0
s = sum(lis)
subset = s/t
for x in lis:
total += x
i= 1
if(total <= subset):
i = 0
yield i
#changelist([input array], number of subset)
print list(changelist([1, 2, 3, 4, 2, 5, 1, 6], 4))
但只有第一个子集是正确的:
output = [0, 0, 0, 1, 1, 1, 1, 1]
我认为numpy.array_split 有问题strange behaviour of numpy array_split。
我真的很想得到任何解释或帮助。
【问题讨论】:
-
我不确定您要做什么。你能详细说明一下吗?
-
您的第一个带有总和的块不清楚。我不知道为什么每行右侧显示的列表与总和相关联。该语句还需要详细说明:“输出的每个子集都表示增量整数,它替换原始输入:。”特别是,什么是“增量整数”?
-
递增整数 - 我认为可以递增,例如 [0, 0, 0, 1, 1, 2, 2, 3, 4, 4, 4, 5, 5...] = 6如果子集的数量更高,则为子集
-
你的问题很不清楚,
numpy.array_split在哪里适合iit? -
NumPy 的 array_split 分割成等长的子集。
标签: python list numpy numbers cumulative-sum