インデックスと値を格納し、新しいリストに変換するベクトルデータ構造a
を使用する関数を記述しようとしています。新しいリストは、重複したインデックスですべての値を合計します。さらに、a
は任意の長さにすることができます。例えばインデックスと値を持つベクトルデータ(辞書)からリストを作成する機能
:
a = {'index': [], 'value': []}
a['index'] = [0, 2, 7, 2, 2, 5, 1]
a['value'] = [1.0, 2.0, 3.0, 4.0, 8.0, 6.0, 7.0]
所望の出力は次のようになります。
インデックス2ために、それは14(2、4、8)までの合計になるx = [1.0, 7.0, 14.0, 0.0, 0.0, 6.0, 0.0, 3.0]
。 a['index']
に表示されないインデックスの場合は0
にx
が割り当てられます。
私は、新しいx
行にわたり、長さn
のゼロ値を持つ繰り返しを試しています。a[index,values]
x[i]
がすでに存在する場合は、既存の値に加算されます。
def newlist(a, n=None):
i_max = max(a['index']) if a['index'] else -1
if n is None:
n = i_max+1
else:
assert n > i_max,
x = [0] * n
for i, v in zip(a['index'], a['value']):
if x[i] in a['index']:
x[i]+=v
else:
x[i]=v
return x
ああ。それはそれよりずっと簡単です。ありがとう – GenXeral