回答編集履歴
3
余ったものも平均を求める処理を追加
answer
CHANGED
@@ -21,4 +21,11 @@
|
|
21
21
|
```Python
|
22
22
|
def n_mean(ls, n):
|
23
23
|
return [sum(ls[i:i+n])/n for i in range(0,len(ls),n)]
|
24
|
+
```
|
25
|
+
n 個に満たない余ったものを余った個数で平均して
|
26
|
+
n_mean([1,2,3,4,5,6,7,8,9,10], 3) を [2.0, 5.0, 8.0, 10.0] としたい場合は
|
27
|
+
```Python
|
28
|
+
def n_mean(ls, n):
|
29
|
+
ln = len(ls)
|
30
|
+
return [sum(ls[i:i+n])/(n if i+n <= ln else ln-i) for i in range(0, ln, n)]
|
24
31
|
```
|
2
コードを戻して処理の差分を追記
answer
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
素直に実装すると
|
2
2
|
```Python
|
3
3
|
def n_mean(ls, n):
|
4
|
-
|
4
|
+
return [sum(ls[i-n+1:i+1])/n for i in range(n-1,len(ls),n)]
|
5
|
-
return [sum(ls[i:i+n])/n for i in range(0,len(ls),n)] # ppaul さんのご指摘を反映
|
6
5
|
|
7
6
|
n_mean([1,2,3,4,5,6,7,8,9], 3) # [2.0, 5.0, 8.0]
|
8
7
|
|
@@ -10,4 +9,16 @@
|
|
10
9
|
amp_list = n_mean(amp_list, 3)
|
11
10
|
plt.scatter(time_list,amp_list)
|
12
11
|
plt.show()
|
12
|
+
```
|
13
|
+
n 個の平均を取る仕様が曖昧なのでどちらがいいかわかりませんが n 個ずつにした余りを無視して
|
14
|
+
n_mean([1,2,3,4,5,6,7,8,9,10], 3) を [2.0, 5.0, 8.0] としたい場合は
|
15
|
+
```Python
|
16
|
+
def n_mean(ls, n):
|
17
|
+
return [sum(ls[i-n+1:i+1])/n for i in range(n-1,len(ls),n)]
|
18
|
+
```
|
19
|
+
n 個に満たないものも n で割った平均値にして
|
20
|
+
n_mean([1,2,3,4,5,6,7,8,9,10], 3) を [2.0, 5.0, 8.0, 3.333...] としたい場合は
|
21
|
+
```Python
|
22
|
+
def n_mean(ls, n):
|
23
|
+
return [sum(ls[i:i+n])/n for i in range(0,len(ls),n)]
|
13
24
|
```
|
1
ppaul さんのご指摘を反映
answer
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
素直に実装すると
|
2
2
|
```Python
|
3
3
|
def n_mean(ls, n):
|
4
|
-
return [sum(ls[i-n+1:i+1])/n for i in range(n-1,len(ls),n)]
|
4
|
+
#return [sum(ls[i-n+1:i+1])/n for i in range(n-1,len(ls),n)]
|
5
|
+
return [sum(ls[i:i+n])/n for i in range(0,len(ls),n)] # ppaul さんのご指摘を反映
|
5
6
|
|
6
7
|
n_mean([1,2,3,4,5,6,7,8,9], 3) # [2.0, 5.0, 8.0]
|
7
8
|
|