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

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

新規登録して質問してみよう
ただいま回答率
85.35%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

Q&A

解決済

1回答

1200閲覧

python 求めた結果で計算

tanaka1111

総合スコア2

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

0グッド

0クリップ

投稿2020/09/09 11:05

編集2020/09/09 15:30

前提・実現したいこと

現在、オシロスコープで撮った複数の波形を積分してそれぞれの面積を求めることができたのですが、
追加でそれらの結果を標準偏差で求めようとしたところ下のようになってしまいました。
積分を求める過程のプログラムが影響しているのだと思うのですが、解決方法がわかりません。

発生している問題・エラーメッセージ

python

1 1.0124000149199993e-10 2標準偏差= 0.0 3u1= 0.0 4 1.0074400148999997e-10 5標準偏差= 0.0 6u1= 0.0 7 1.0070400148200007e-10 8標準偏差= 0.0 9u1= 0.0 10 1.0146000148599994e-10 11標準偏差= 0.0 12u1= 0.0 13 1.0046000149199995e-10 14標準偏差= 0.0 15u1= 0.0 16 9.960000147399987e-11 17標準偏差= 0.0 18u1= 0.0 19 1.0075200149199996e-10 20標準偏差= 0.0 21u1= 0.0 22 1.013160014899999e-10 23標準偏差= 0.0 24u1= 0.0 25 1.000920014819999e-10 26標準偏差= 0.0 27u1= 0.0 28 1.0012400150599986e-10 29標準偏差= 0.0 30u1= 0.0 31 9.957600148600004e-11 32標準偏差= 0.0 33u1= 0.0 34 1.0118400148999986e-10 35標準偏差= 0.0 36u1= 0.0 37 1.0084400147600001e-10 38標準偏差= 0.0 39u1= 0.0 40 9.913600149600003e-11 41標準偏差= 0.0 42u1= 0.0 43 1.0013600147199992e-10 44標準偏差= 0.0 45u1= 0.0 46 9.974400148199994e-11 47標準偏差= 0.0 48u1= 0.0 49 1.0008400148199995e-10 50標準偏差= 0.0 51u1= 0.0 52 1.0010800149199998e-10 53標準偏差= 0.0 54u1= 0.0 55 9.976400149199987e-11 56標準偏差= 0.0 57u1= 0.0 58 9.975600148799997e-11 59標準偏差= 0.0 60u1= 0.0

該当のソースコード

python

1import numpy as np 2import matplotlib.pyplot as plt 3import pandas as pd 4import numpy as np 5import math 6 7voltage = np.genfromtxt ("C:/Users/tanaka/Downloads/2019 0829 100pC 002 測定結果 (1).csv",delimiter=',',dtype=float) 8r=50 9sample=1e-10 10 11temp_array=np.transpose(voltage) 12time=list(temp_array[0]) 13time=np.array(time) 14 15for i in range(1,21): 16 voltage=list(temp_array[i]) 17 voltage=np.array(voltage) 18 length=np.size(voltage) 19 dennryuu=np.zeros(length) 20 dennryuu=voltage/r 21 seki=np.zeros(length-1) 22 start=1 23 stop=1000 24 stop1=999 25 for i in range(start,stop1): 26 seki[i]=((dennryuu[i+1]+dennryuu[i])*sample)/2 27 print('',sum(seki)*-1) 28 29 seki_kekka = sum(seki)*-1 30 31 hensa = np.std(seki_kekka) 32 print("標準偏差=",hensa) 33 k = 2.093 34 n = 20 35 σ = hensa 36 print("u1=",(σ*k)/(2*(np.sqrt(n))))

試したこと

seki_kekka = sum(seki)*-1 以下が追加したもので、それがなければ以下のようになります。

python

11.0124000149199993e-10 2 1.0074400148999997e-10 3 1.0070400148200007e-10 4 1.0146000148599994e-10 5 1.0046000149199995e-10 6 9.960000147399987e-11 7 1.0075200149199996e-10 8 1.013160014899999e-10 9 1.000920014819999e-10 10 1.0012400150599986e-10 11 9.957600148600004e-11 12 1.0118400148999986e-10 13 1.0084400147600001e-10 14 9.913600149600003e-11 15 1.0013600147199992e-10 16 9.974400148199994e-11 17 1.0008400148199995e-10 18 1.0010800149199998e-10 19 9.976400149199987e-11 20 9.975600148799997e-11

追記

print(seki_kekka)を入れてみました

python

1 1.0124000149199993e-10 2標準偏差= 0.0 3u1= 0.0 41.0124000149199993e-10 5 1.0074400148999997e-10 6標準偏差= 0.0 7u1= 0.0 81.0074400148999997e-10 9 1.0070400148200007e-10 10標準偏差= 0.0 11u1= 0.0 121.0070400148200007e-10 13 1.0146000148599994e-10 14標準偏差= 0.0 15u1= 0.0 161.0146000148599994e-10 17 1.0046000149199995e-10 18標準偏差= 0.0 19u1= 0.0 201.0046000149199995e-10 21 9.960000147399987e-11 22標準偏差= 0.0 23u1= 0.0 249.960000147399987e-11 25 1.0075200149199996e-10 26標準偏差= 0.0 27u1= 0.0 281.0075200149199996e-10 29 1.013160014899999e-10 30標準偏差= 0.0 31u1= 0.0 321.013160014899999e-10 33 1.000920014819999e-10 34標準偏差= 0.0 35u1= 0.0 361.000920014819999e-10 37 1.0012400150599986e-10 38標準偏差= 0.0 39u1= 0.0 401.0012400150599986e-10 41 9.957600148600004e-11 42標準偏差= 0.0 43u1= 0.0 449.957600148600004e-11 45 1.0118400148999986e-10 46標準偏差= 0.0 47u1= 0.0 481.0118400148999986e-10 49 1.0084400147600001e-10 50標準偏差= 0.0 51u1= 0.0 521.0084400147600001e-10 53 9.913600149600003e-11 54標準偏差= 0.0 55u1= 0.0 569.913600149600003e-11 57 1.0013600147199992e-10 58標準偏差= 0.0 59u1= 0.0 601.0013600147199992e-10 61 9.974400148199994e-11 62標準偏差= 0.0 63u1= 0.0 649.974400148199994e-11 65 1.0008400148199995e-10 66標準偏差= 0.0 67u1= 0.0 681.0008400148199995e-10 69 1.0010800149199998e-10 70標準偏差= 0.0 71u1= 0.0 721.0010800149199998e-10 73 9.976400149199987e-11 74標準偏差= 0.0 75u1= 0.0 769.976400149199987e-11 77 9.975600148799997e-11 78標準偏差= 0.0 79u1= 0.0 809.975600148799997e-11

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

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

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

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

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

tiitoi

2020/09/09 14:38 編集

おそらく浮動小数点演算でアンダフローが起きているのではないかと思うのですが、print(seki_kekka) の出力を追記できますか?
tanaka1111

2020/09/09 14:49

出力できたので追記しました
tiitoi

2020/09/09 14:52

貼っていただきたいのは変数 seki_kekka を print した値です。 np.std(seki_kekka) に渡してる値です。
tiitoi

2020/09/09 14:57 編集

もしかして1行追加されたスカラーの値が変数 seki_kekka の中身ですか? 変数1つしかないのであれば、その標準偏差は当然0になります。 > seki_kekka = sum(seki)*-1 この処理はどのような意図なのでしょうか? seki はリストなのでその標準偏差を計算するという意味ならわかるのですが、総和をとってその標準偏差を計算するというのは変ではないでしょうか。
tanaka1111

2020/09/09 15:09

はい、追加された値が中身です。 試したことの中にある値の標準偏差を求めたいのですが、変数が複数必要ということですか?
tanaka1111

2020/09/09 15:16

-1.0124000149199993e-10 -1.0074400148999997e-10 結果が-で出力されたので*-1を置いています
tiitoi

2020/09/09 15:16

標準偏差は複数の値が与えられたときのバラツキ具合なので、np.std() に与える変数は1次元配列以上であるはずです。 stdが0になってしまったコードでは、sum() で総和 (スカラー) を計算してその標準偏差を計算していることになっているので、スカラーの標準偏差は0です。 ``` print(np.std([0, 1, 2])) # 0.816496580927726 print(np.std(sum([0, 1, 2]))) # 0 ```
tanaka1111

2020/09/09 15:28

0になった理由はわかりました。しかしsumを外すと膨大なデータ量になってしまうのですが、出力された20個のデータを複数の値として認識させる方法はありませんか?
tiitoi

2020/09/09 15:35

20回の計算結果の標準偏差ということであれば、ループの外で計算するべきではないでしょうか
guest

回答1

0

ベストアンサー

計算結果をリストに記録していき、ループが終了したあとにそのリストの標準偏差を計算すればいいのではないでしょうか

以下は疑似コードです。

python

1results = [] 2for ... 3 ret = ... # なんらかの計算結果で得られた値 4 5 results.append(ret) 6 7print(np.std(results))

投稿2020/09/09 15:34

tiitoi

総合スコア21956

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

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

tanaka1111

2020/09/09 16:48

できました。とても詳しく教えていただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問