【发布时间】:2021-06-03 19:32:00
【问题描述】:
我正在尝试编写一个函数,它一次添加一个Sequence,直到达到Number。因此,由于Sequence 数组的总和是 21 而不是 45,它会将Sequence 3 的第一个元素添加到Sequence,因此它变成[3, 7, 11, 3]。由于[3, 7, 11, 3] 等于 24 并且小于 45,序列中的下一个元素将被添加,即 7,Sequence 更新为[3, 7, 11, 3, 7],依此类推,直到Number> np.sum([Sequence] 不返回True。下面的np.where函数有问题怎么解决?
代码:
Number = 45
Number2= 46
Sequence = np.array([3, 7, 11])
p = 0
np.where(Number> np.sum([Sequence]),np.append(Sequence,Sequence[p], p+= 1))
np.where(Number2> np.sum([Sequence]),np.append(Sequence,Sequence[p], p+= 1))
预期输出
Number = [3,7,11,3,7,11,3]
Number2 = [3,7,11,3,7,11,3,7]
【问题讨论】:
-
Python 首先计算函数参数,然后传入结果。
where是一个函数,而不是一个迭代器。在尝试做这种奇特的事情之前,在交互式会话中练习where。 -
除了像
np.cumsum这样的函数之外,大多数numpy函数在其输入“并行”上运行,作为整个数组。它们不按顺序运行。列表更适合像您这样的顺序任务。 -
无论如何我可以用 pandas 模块或 np.cumsum 植入我想要做的事情
标签: python arrays function numpy