【发布时间】:2020-02-29 14:58:52
【问题描述】:
我有一个像这样的 numpy 数组
[1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]
现在我有一个二维数组,它告诉开始索引和结束索引以及要求和的值。像这样
[[5, 12, 29] [8, 22, 719]]
我想更快地将这些数字添加到我的初始数组中。
目前我的解决方案是
f= np.zeros(n+1, dtype = int)
# print(rounds)
for elem in rounds:
print('rounds : ',elem)
one = elem[0]
two = elem[1]
value_add = elem[2]
# for i in range(0,n+1):
for i in range(one-1,two):
f[i-1] += value_add
# print(f)
矩阵太长时速度很慢,还有其他优化方法吗?
第二次迭代尝试优化
将 numpy 导入为 np
f= np.zeros(n+1, dtype = int)
# print(rounds)
new = np.zeros(n+1)
for elem in rounds:
# prin t('rounds : ',elem)
one = elem[0]
two = elem[1]
value_add = elem[2]
# for i in range(0,n+1):
new[one-1:two] += value_add
【问题讨论】:
-
我对“求和”部分并不完全清楚。我是否正确假设原始数组的元素必须增加一定数量,从第一个索引开始到第二个索引之前结束?也就是说
[2, 5, 3]这样的条目会导致原来的变成[1, 2, 5, 5, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]? -
是的,没错