質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

683閲覧

リスト中の隣接する値の平均値をスマートに求めたい

okahijiki

総合スコア404

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/05/31 09:49

リスト中の隣り合う値(右から左)を引き、その、それぞれの差の平均値を求めてみました。
もっとシンプルなコードがありましたら、ご教示くださいませ。よろしくお願いいたします。

◎参照

イメージ説明

python

1lst=[8, 9, 4, 12, 13] 2 3a=[] 4for i in lst[1:5]: 5 a.append(i) 6 7print(a) 8#[9, 4, 12, 13] 9 10b=[] 11for i in lst[0:4]: 12 b.append(i) 13 14print(b) 15#[8, 9, 4, 12] 16 17 18#引き算ができるよう多次元配列に変換する 19import numpy as np 20a_arr=np.array(a) 21b_arr=np.array(b) 22print(a_arr) 23print(b_arr) 24#[ 9 4 12 13] 25#[ 8 9 4 12] 26 27diff_arr=a_arr-b_arr 28print(diff_arr) 29#[ 1 -5 8 1] 30 31avg=sum(diff_arr)/(len(lst)-1) 32print('差の平均値は',avg) 33#差の平均値は 1.25 34 35 36

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

やっていることの意味をよく考えてみれば、以下で十分です。

python

1>>> avg = (lst[-1] - lst[0]) / (len(lst) - 1) 2>>> print(avg) 31.25

投稿2021/05/31 10:27

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

okahijiki

2021/05/31 11:06

ご回答、ありがとうございます! たしかに、そうでした。確認してみました。 おかげさまで、すっきりしましたー! a=[lst[1],lst[2],lst[3],lst[4]] b=[lst[0],lst[1],lst[2],lst[3]] a-b=[lst[1]-lst[0], lst[2]-lst[1], lst[3]-lst[2], lst[4]-lst[3]] sum(a-b)=[lst[1]-lst[0]+lst[2]-lst[1]+lst[3]-lst[2]+lst[4]-lst[3]] sum(a-b)=[lst[4]-lst[0]] sum(a-b)=[lst[-1]-[lst[0]] avg = (lst[-1] - lst[0]) / (len(lst) - 1)
guest

0

おはようございます。

問題文読ませていただきました。

こんな感じでいかがでしょうか?

python

1lst = [8, 9, 4, 12, 13] 2 3# 初期値 4previousValue = lst[0] 5# 分子の値 6molecule = 0 7# 分母の値 8cnt = 0 9for i in range(1, len(lst)): 10 molecule = molecule + (lst[i] - previousValue) 11 previousValue = lst[i] 12 cnt = cnt + 1 13 14print(molecule / cnt) 15

ご確認のほど、よろしくお願いいたします。????‍♂️

投稿2021/05/31 22:09

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

okahijiki

2021/06/01 07:16

ご回答、ありがとうございます。 同じ解が得られました。 こういうのも書いてみました。ご参考までに。 lst=[8,9,4,12,13] d=[] for a, b in zip(lst[1:5],lst): c=a-b d.append(c) e=sum(d) #分子 f=len(lst)-1#分母 print(e/f)
退会済みユーザー

退会済みユーザー

2021/06/01 08:06

ナイス〜!! また困ったこととかありましたら、気軽にご相談ください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問