私は、次のPython 3のコードました:forループの最後のアイテムの平均を計算するには?
import random
import numpy as np
data = []
for i in range(0, 100):
value = random.randrange(100)
avg10 = np.average(data[:-10]['value'])
data += [{'value': value, 'avg10': avg10}]
最後の10項目の平均値と一緒に、リスト内の100個の乱数を生成することを目指しています。
残念ながら、コードがで失敗します。私は(すべて10が利用できない場合は以下の項目)辞書のリストから10の最後の値項目にアクセスし、それを渡すことができるかわからないよう
Traceback (most recent call last):
File "avg_test.py", line 6, in <module>
avg10 = np.average(data[:-10]['value'])
TypeError: list indices must be integers or slices, not str
numpyのaverage
機能に変換します。その上
[{'value': 11, 'avg10': 11}, {'value': 62, 'avg10': 36.5}, {'value': 56, 'avg10': 43}, {'value': 48, 'avg10': 44.25}, {'value': 43, 'avg10': 41.8}]
と:
だから例えば私のような出力に何かを期待しています。
ここで、avg10
は、現在のもの(現在のものを含むことが理想的ですが、これを含む必要はありません)からの相対的な(少なくとも)10項目の平均です。前の要素が1つだけの場合は、1要素の平均です(2つの値の平均値など)(最後の10項目の平均が最大)。
この場合、正しい構文は何でしょうか?
あなたは 'avg10 = np.average(値[ - 10])もしかして'? –
そうでなければ、「最後の10」と言うとき、1000要素(100倍10)の合計を意味しますか? –
@cᴏʟᴅsᴘᴇᴇᴅしかし、 'value'は' data'リストに格納されている単一の値なので、最後の10項目にアクセスするにはリストからアクセスする必要があります。 – kenorb