2015-10-13 211 views
0

我有一個排序數組(如下所示),我可以使用什麼方法來對等效目標響應求和並因此計算每個值的平均值?例如將所有對應於目標的值相加= 15.26(其他試驗中的值不相同)。Array summation:計算平均值

我考慮循環查找第3列中的相似數字,但肯定有一個更簡單的解決方案。

非常感謝, 新手

 response target 
103 4.556049 15.260 
55 10.549498 15.260 
31 18.497221 15.260 
130 13.275155 15.260 
93  6.621331 15.260 
35  7.653972 15.260 
149 15.808224 15.260 
84  4.556049 15.260 
113 8.996922 15.260 
152 18.282948 15.260 
162 14.606229 15.260 
60  5.588690 15.260 
57  7.653972 15.260 
159 20.902759 15.260 
23 11.645647 15.260 
40 21.385003 25.367 
76 19.298551 25.367 
71 17.724806 25.367 
70 11.639967 25.367 
178 36.359849 25.367 
65 16.947743 25.367 
32 25.811419 25.367 
52 27.309781 25.367 
26 27.160049 25.367 
179 34.706590 25.367 
54 22.157935 25.367 
119 13.888544 25.367 
123 39.826426 25.367 
147 36.674288 25.367 
151 33.022869 25.367 
175 46.078035 39.536 
4  34.567184 39.536 
45 34.130893 39.536 
8  51.218523 39.536 
42 35.367997 39.536 
78 26.210535 39.536 
157 43.627062 39.536 
116 22.879751 39.536 
102 25.996262 39.536 
135 45.632451 39.536 
126 34.580608 39.536 
125 40.390764 39.536 
30 35.767629 39.536 
86 33.775664 39.536 
94 30.904922 39.536 
88 68.897857 59.655 
177 64.219992 59.655 
171 63.937565 59.655 
74 54.867877 59.655 
163 39.521796 59.655 
75 68.286534 59.655 
148 70.700332 59.655 
115 47.631128 59.655 
167 55.704317 59.655 
80 51.786992 59.655 
0  54.931901 59.655 
12 46.967656 59.655 
10 62.339037 59.655 
3  64.174040 59.655 
43 66.948747 59.655 
44 75.237758 89.387 
101 82.690846 89.387 
27 74.046606 89.387 
105 94.395834 89.387 
108 63.940663 89.387 
112 111.211880 89.387 
161 70.394671 89.387 
29 116.047222 89.387 
164 86.483221 89.387 
96 83.612994 89.387 
51 90.062871 89.387 
49 99.448547 89.387 
120 64.238064 89.387 
121 99.623064 89.387 
136 87.784865 89.387 
53 99.587954 119.710 
90 99.497598 119.710 
155 117.134593 119.710 
2 118.382540 119.710 
87 123.984619 119.710 
173 126.473800 119.710 
124 128.213801 119.710 
62 104.233807 119.710 
142 151.525160 119.710 
77 84.349268 119.710 
46 128.496744 119.710 
137 135.726266 119.710 
6 106.980116 119.710 
109 135.305464 119.710 
56 146.565384 119.710 
21 149.950898 155.140 
144 138.947073 155.140 
132 157.788645 155.140 
25 138.816444 155.140 
98 159.238989 155.140 
97 136.179079 155.140 
18 160.264919 155.140 
92 106.939843 155.140 
50 133.825173 155.140 
156 160.650610 155.140 
169 164.086207 155.140 
7 120.081751 155.140 
82 144.995253 155.140 
73 148.619307 155.140 
160 155.345932 155.140 
154 286.343698 241.970 
20 238.666653 241.970 
17 243.265521 241.970 
61 233.941803 241.970 
67 225.647113 241.970 
134 238.871632 241.970 
141 257.964136 241.970 
39 237.710944 241.970 
106 267.179426 241.970 
158 288.864375 241.970 
104 219.470369 241.970 
38 221.280073 241.970 
36 216.673977 241.970 
128 255.494058 241.970 
91 222.512530 241.970 
9 248.174697 281.250 
143 339.346073 281.250 
165 319.828122 281.250 
166 339.152453 281.250 
172 311.936161 281.250 
14 229.413155 281.250 
153 362.308915 281.250 
117 334.014030 281.250 
99 266.162791 281.250 
85 307.998184 281.250 
118 322.768051 281.250 
22 247.992436 281.250 
100 282.320528 281.250 
24 308.043620 281.250 
48 277.614265 281.250 
89 324.674307 312.340 
34 319.110436 312.340 
83 294.367320 312.340 
107 256.297453 312.340 
5 330.217008 312.340 
127 394.634200 312.340 
66 335.137544 312.340 
63 303.852646 312.340 
16 336.398915 312.340 
133 401.600397 312.340 
176 336.454678 312.340 
122 367.271789 312.340 
1 330.173121 312.340 
140 389.322293 312.340 
33 306.170925 312.340 
170 463.588300 365.130 
68 354.929661 365.130 
174 511.082051 365.130 
41 407.971277 365.130 
81 352.324308 365.130 
19 455.697372 365.130 
95 347.397060 365.130 
13 374.191002 365.130 
15 471.887121 365.130 
146 420.940734 365.130 
114 365.869462 365.130 
138 466.096069 365.130 
11 421.345013 365.130 
139 451.122771 365.130 
111 358.154084 365.130 
129 513.113772 415.210 
131 465.486811 415.210 
58 498.471436 415.210 
59 480.860257 415.210 
64 435.301676 415.210 
37 401.883341 415.210 
28 520.876652 415.210 
69 402.135305 415.210 
145 514.131956 415.210 
47 506.972655 415.210 
72 402.655756 415.210 
79 402.615483 415.210 
150 519.844011 415.210 
168 504.783972 415.210 
110 435.998192 415.210 


    mean_plain = [] 
for i in range(0,11): 
    mean_plain.append([a[i][1].response.mean(),a[i][0]]) 

困在這裏,如此接近,但不完全正確的格式(理想我想原始列的目標和響應

+0

是的,你通過輸入數據必須循環。 – Ritesh

+1

什麼可以更簡單,然後循環? –

+0

你不能在這裏跳過循環。它的排序陣列會更快。 – Ritesh

回答

0

最簡單的事情將是如果你有數據庫中的數據,如果數據已經來自數據庫,或者你可以把它放在數據庫中,那麼可以很方便地執行如下操作:

select target, count(*), avg(col1), avg(response) 
from your_table 
group by target 

如果您無法訪問數據庫,您可以嘗試https://www.sqlite.org/,如果您渴望瞭解數據庫使用的基礎知識。

+0

繼續使用熊貓 'A =名單(data.groupby(' 目標 ')) A [0] [1] .response.mean()' – WBM

1

使用GROUPBY UlfR想法繼續,這很好地工作

a=list(data.groupby('target')) 
a[0].response.mean() 

只是要循環通過它和存儲值現在

+0

困在這裏,我的循環技能缺乏 '一個你的想法= list(data_plain.groupby('target')) mean_plain = np.zeros(12,2) 我在範圍內(0,11): mean_plain [i ,:] = [a [i] [1] .response.mean(),A [1] [0]]' – WBM