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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

4回答

1918閲覧

Raspberry Pi picoでの平均値、中央値の取得

TatsuyaMorita

総合スコア55

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/02/16 07:21

編集2022/02/16 23:34

Raspberry Pi Picoで電圧を10回取得して、そのリストを出力するmicropythonプログラムを作ってみました。
Picoでは、numpyやstatisticsなどのライブラリが使えないようなのですが、10回の電圧データの平均値や中央値を出力するには、どうすればよいでしょうか?

コード import machine import utime sensor_smoke = machine.ADC(0) conversion_factor = 3.3 / (65535) def data(): result = [] for reading in range(10): reading = sensor_smoke.read_u16() * conversion_factor print(reading) utime.sleep(1) result.append(reading) return result print(data())

<追記>
回答ありがとうございます。
最後の行に、print(sum(data())/len(data()))を書くと、
0.8171068
0.8154955
0.8138842
0.8122728
0.8171068
0.8187181
0.801799
0.8106614
0.825214
0.8171068
[0.8171068, 0.8154955, 0.8138842, 0.8122728, 0.8171068, 0.8187181, 0.801799, 0.8106614, 0.825214, 0.8171068]
0.8146898
0.8235522
0.8130785
0.8130785
0.8154955
0.8203296
0.8146898
0.8163012
0.8268253
0.8195239
0.8195239
0.8171068
0.8146898
0.8195239
0.8138842
0.8130785
0.8146898
0.8171068
0.8138842
0.8154955
0.8177564
のように
電圧のリストの後に、21行ほど値が表れたのですが、どうしてでしょうか?

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

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

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

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

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

TatsuyaMorita

2022/02/16 08:27

回答ありがとうございます。 最後の行に、print(sum(data())/len(data()))を書くと、 0.8171068 0.8154955 0.8138842 0.8122728 0.8171068 0.8187181 0.801799 0.8106614 0.825214 0.8171068 [0.8171068, 0.8154955, 0.8138842, 0.8122728, 0.8171068, 0.8187181, 0.801799, 0.8106614, 0.825214, 0.8171068] 0.8146898 0.8235522 0.8130785 0.8130785 0.8154955 0.8203296 0.8146898 0.8163012 0.8268253 0.8195239 0.8195239 0.8171068 0.8146898 0.8195239 0.8138842 0.8130785 0.8146898 0.8171068 0.8138842 0.8154955 0.8177564 のように 電圧のリストの後に、21行ほど値が表れたのですが、どうしてでしょうか?
episteme

2022/02/16 22:29 編集

ここは「質問への追記・修正の依頼」 回答にコメントしておくれ。
episteme

2022/02/17 03:25

... そこじゃない
jbpb0

2022/02/17 11:31

> 最後の行に、print(sum(data())/len(data()))を書くと をしたコードで、 ・「data()」が全部で何回実行されるか? ・「data()」が一回実行されたら、取得したデータの表示「print(reading)」が何回実行されるか? を考えたら、 > 電圧のリストの後に、21行ほど値が表れたのですが、どうしてでしょうか? の理由が分かると思います
jbpb0

2022/02/17 12:23

あれ? https://teratail.com/questions/m7oib0h5rz8rrh の質問に記載のコードでは、「data()」の実行は一回だけで、実行結果を「list1=data()」と格納して、それをその後で使いまわしてますけど、こちらの質問のコードもそうしたら、 > 電圧のリストの後に、21行ほど値が表れたのですが、どうしてでしょうか? が起きなくなりますよ
guest

回答4

0

自己解決

皆さん、回答ありがとうございました。
list1 = data()
と格納してから、
print(list1)
avg = sum(list1) / len(list1)
print("avg:" + str(avg))
とすると、余計な値が出力されることなく、平均値を出すことができました。

投稿2022/02/19 04:14

TatsuyaMorita

総合スコア55

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

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

0

回答ありがとうございます。
最後の行に、print(sum(data())/len(data()))を書くと、
0.8171068
0.8154955
0.8138842
0.8122728
0.8171068
0.8187181
0.801799
0.8106614
0.825214
0.8171068
[0.8171068, 0.8154955, 0.8138842, 0.8122728, 0.8171068, 0.8187181, 0.801799, 0.8106614, 0.825214, 0.8171068]
0.8146898
0.8235522
0.8130785
0.8130785
0.8154955
0.8203296
0.8146898
0.8163012
0.8268253
0.8195239
0.8195239
0.8171068
0.8146898
0.8195239
0.8138842
0.8130785
0.8146898
0.8171068
0.8138842
0.8154955
0.8177564
のように
電圧のリストの後に、21行ほど値が表れたのですが、どうしてでしょうか?

投稿2022/02/17 07:46

TatsuyaMorita

総合スコア55

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

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

episteme

2022/02/18 00:31

data() の中でprintしてるから。
guest

0

その10回取得した値を、全部足し込んで、それを10で割ると平均が出ます

投稿2022/02/16 07:39

y_waiwai

総合スコア87784

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

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

0

平均値や中央値を出力するには、どうすればよいでしょうか?

平均値 : 各要素の総和を要素数で割る
中央値:要素列をソートし、要素列の中央(要素数/2番目)の値
※ 要素数が偶数であったときは中央を挟む2値の平均

投稿2022/02/16 07:25

episteme

総合スコア16614

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問