浮動小数点数の大きな配列とインデックスの2つの配列を考えると、以下の規則に従って、指定されたインデックス間に含まれるすべての値を合計するエレガントな方法を探しています:ラップアラウンド条件を持つインデックス配列間のナンビサムの和
- index1のは> index0からは、総和はまっすぐ前方ファッション
- index1の< index0から、合計 "ラップアラウンド" の値で行われます。例えばので
:
import numpy as np
# Straight forward summation when index1 > index0
values = np.array([0.,10.,20.,30.,40.,50.,60.,70.])
index0 = np.array([0,3])
index1 = np.array([2,6])
# Desired Result: np.array([30,180]) # (0+10+20),(30+40+50+60)
# Wrap around condition when index1 < index0
index0 = np.array([5])
index1 = np.array([1])
# Result: np.array([190]) # (50+60+70+0+10)
私はむしろ大きな配列を扱っていますので、可能な場合、私は、エレガントなnumpyの中心のソリューションを探しています。
あなたはあなたの例を二重チェック、境界線との結果がオフに見えると予想することができます... – Julien
は、これらの範囲の重複が[(index0から= np.array 'のようなもの、があるかもしれません0,3])とindex1 = np.array([4,6]) '? – Divakar
@Divakarはい。 'index0'と' index1'はペアのリストとしても表現できます: 'index = np.array([[0,4]、[3,6]、...])' ... ifそれは助ける。 – Fnord