У меня есть матрица M:
M = [[10, 1000],
[11, 200],
[15, 800],
[20, 5000],
[28, 100],
[32, 3000],
[35, 3500],
[38, 100],
[50, 5000],
[51, 100],
[55, 2000],
[58, 3000],
[66, 4000],
[90, 5000]]
И матрица R:
[[10 20]
[32 35]
[50 66]
[90 90]]
Я хочу использовать значения в столбце 0 матрицы R в качестве начального значения срезаи значение в столбце 1 как конец среза.
Я хочу вычислить сумму между и включением диапазонов этих срезов из правого столбца в матрице М.
В основном выполняем
M[0:4][:,1].sum() # Upper index +1 as I need upper bound including
M[5:7][:,1].sum() # Upper index +1 as I need upper bound including
и так далее.0 - это индекс 10, а 3 - это индекс 20. 5 - это индекс 32, 6 - индекс 35.
Я застрял в том, как получить начальные / конечные значения из матрицы Rв единицах по столбцу 0 матрицы M. А затем вычислите сумму между диапазоном индекса, включая верхнюю / нижнюю границу.
Ожидаемый результат:
[[10, 20, 7000], # 7000 = 1000+200+800+5000
[32, 35, 6500], # 6500 = 3000+3500
[50, 66, 14100], # 14100 = 5000+100+2000+3000+4000
[90, 90, 5000]] # 5000 = just 5000 as upper=lower boundary
Обновление, теперь я могу получить индексыс помощью поиска отсортированы.Теперь мне просто нужно использовать сумму в столбце 1 матрицы M в начале и в конце.
start_indices = [0,5,8,13]
end_indices = [3,6,12,13]
Интересно, есть ли более эффективный способ, чем применение цикла for?
EDIT:Нашел ответ здесь. Числовая сумма значений в подмассивах между парами индексов