我有一个执行以下操作的函数:
1.使用列表作为输入
1.计算列表的和
1.将输出(总和)追加到输入列表
1.再次运行自身(这一次使用N+1个数据列表)。
我想对数字数组的输入做同样的事情,但我没有得到一个完整的解决方案。
这就是我目前所拥有的:
data = [15.5, 19.2, 27.8, 44.6, 71.0, 54.1, 60.2]
def AppendOutput(data, steps):
for i in range(steps):
s = sum(data)
emp.append(s)
data.append(emp)
return data
s = AppendOutput(data, 3)
这将输出以下内容,这正是我想要的:
[15.5, 19.2, 27.8, 44.6, 71.0, 54.1, 60.2, 292.4, 584.8, 1169.6]
我目前的问题是,我正在尝试为一个数字数组的输入完成同样的事情。
data_array = np.array([data])
def AppendOutputNP(data, steps):
for j in range(steps):
temp = np.sum(data_array).reshape((-1,1))
new = np.append(data_array, temp, axis=1)
return new
AppendOutputNP(data_array, 3)
与原始函数相比,我得到了部分解;这一次只追加了一个元素,而不是三个:
array([[ 15.5, 19.2, 27.8, 44.6, 71. , 54.1, 60.2, 292.4]])
有人能告诉我我做错了什么吗?
1条答案
按热度按时间1sbrub3j1#
最好是在函数开始处形成结果数组。
numpy.append
相当慢。第二个和是第一个的两倍,第三个是第二个的两倍,以此类推,所以只求和一次,然后乘以。
这取决于数据列表的长度,但
Mult
方法的速度可能会快几倍。