選択された値に応じてndarraysのリストをまとめ、プロット

ZED:

私はndarraysのリストを持っています:

list1 = [t1, t2, t3, t4, t5]

各tはで構成されています。

t1 = np.array([[10,0.1],[30,0.05],[30,0.1],[20,0.1],[10,0.05],[10,0.05],[0,0.5],[20,0.05],[10,0.0]], np.float64)

t2 = np.array([[0,0.05],[0,0.05],[30,0],[10,0.25],[10,0.2],[10,0.25],[20,0.1],[20,0.05],[10,0.05]], np.float64)

...

今、私は、各tについて、最初の要素に対応する値の平均値を取得するにはリスト全体のためにしたいです:

t1out = [[0,0.5],[10,(0.1+0.05+0.05+0)/4],[20,(0.1+0.05)/2],[30,0.075]]

t2out = [[0,0.05],[10,0.1875],[20,0.075],[30,0]]

....

T_1 ... T_Nを生成した後、私は、最初の要素は、クラス(0,10,20,30)を表し、第二の要素は、これらのクラスの確率を示す各T、のクラス上の確率をプロットしたい回の出現(0.1,0.7,0.15,0)。ヒストグラムなどのバープロットの形で確率分布のような何か:

plt.bar([classes],[probabilities])

plt.bar([item[0] for item in t1out],[item[1] for item in t1out])
オリジナル:

ここで使用する一つの方法ですitertools.groupby

from statistics import mean
from itertools import groupby

def fun(t):
    s = sorted(t, key=lambda x:x[0])
    return [[k, mean(i[1] for i in v)] for k,v in groupby(s, key=lambda x: x[0])]

fun(t1)

[[0.0, 0.5],
 [10.0, 0.05],
 [20.0, 0.07500000000000001],
 [30.0, 0.07500000000000001]]

そして、すべてのアレイに適用します:

[fun(t) for t in [t1,t2]]

[[[0.0, 0.5],
  [10.0, 0.05],
  [20.0, 0.07500000000000001],
  [30.0, 0.07500000000000001]],
 [[0.0, 0.05], [10.0, 0.1875], [20.0, 0.07500000000000001], [30.0, 0.0]]]

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=23956&siteId=1