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

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

ただいまの
回答率

90.42%

  • Python

    9750questions

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

python 異なるコードなのに答えが同じになる 助けてください

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 100

Tubasa1995

score 33

下記の2つのコードを書きました.
計算の演算方法が違うにも関わらず
1つ目のコードの出力3points-test.csvの53行目以降と
2つ目のコードの出力5poins-test.csvの1行目以降は
同じ値が出力されます.

いったい何がいけないのか全く分かりません.
このコードの計算はなぜ同じ出力結果を出すのですか.

入力のhistory_7702-15402with_Header.csvは
7701行×7201列のcsvファイルなのですが,
答えが同じという事は,きっとコードの演算が違うのだと思います.

import numpy as np
import pandas as pd
import decimal as dec
from scipy import signal

data = pd.read_csv("history_7702-15402with_Header.csv").values.tolist()

lst = []
filterrange = dec.Decimal(2)
deltax = dec.Decimal(1)
deltay = dec.Decimal(1)
a = filterrange*filterrange/24

for j in range(100):
    for i in range(7597):
         a1 = dec.Decimal(data[i+51][j])
         a2 = dec.Decimal(data[i+52][j])
         a3 = dec.Decimal(data[i+53][j])
         a4 = dec.Decimal(data[i+103][j])
         a6 = dec.Decimal(data[i+1][j])
         x = a2 + a*(((a3 - 2*a2 + a1)/(deltax*deltax)) + ((a4 - 2*a2 +a6)/(deltay*deltay)))
         lst.append(x)

#np.savetxt('filtered4_15403-23103_history.csv', lst, delimiter=',')

array_lst = np.array(lst)
reshape = array_lst.reshape(100,7597)
np.savetxt('3points-test.csv', reshape, delimiter=',')

min_list = []
minimum = np.min(reshape,axis=0)
min_list.append(minimum)

np.savetxt('3points-testmin.csv', min_list, delimiter=',')
import numpy as np
import pandas as pd
import decimal as dec

data = pd.read_csv("history_7702-15402with_Header.csv").values.tolist()
print(data[0][0])
print(data[1][0])
print(data[1][1])

lst = []
filterrange = dec.Decimal(2)
deltax = dec.Decimal(1)
deltay = dec.Decimal(1)
a = filterrange*filterrange/dec.Decimal(24)
b = filterrange*filterrange*filterrange*filterrange/dec.Decimal(1152)
dcccc = dec.Decimal(12)


for j in range(50):
    for i in range(7493):
         a1 = dec.Decimal(data[i+102][j])
         a2 = dec.Decimal(data[i+103][j])
         a3 = dec.Decimal(data[i+104][j])
         a4 = dec.Decimal(data[i+105][j])
         a5 = dec.Decimal(data[i+106][j])
         a6 = dec.Decimal(data[i+2][j])
         a7 = dec.Decimal(data[i+53][j])
         a8 = dec.Decimal(data[i+155][j])
         a9 = dec.Decimal(data[i+206][j])
         x = a3 + a*((-a5 + 16*a4 - 60*a3 + 16*a2 - a1 - a9 + 16*a8 + 16*a7 - a6)/(dcccc*deltax*deltax)) + b*((a5 - 4*a4 + 12*a3 - 4*a2 + a1 + a6 -4*a7 -4*a8 + a9)/(deltay*deltay*deltay*deltay))
         lst.append(x)
#np.savetxt('7702-15402_5point2derta.csv', list, delimiter=',')

array_lst = np.array(lst)
reshape = array_lst.reshape(50,7493)
np.savetxt('5poins-test.csv', reshape, delimiter=',')

min_list = []
minimum = np.min(reshape,axis=0)
min_list.append(minimum)

np.savetxt('5points-testmin.csv', min_list, delimiter=',')
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • mts10806

    2019/01/11 20:45

    何度か言ったと思いますが、Python本体の回答は無理なので回答依頼は別の人にだしてください。

    キャンセル

回答 2

+1

7495+206=7701 で、インデックスが配列の範囲を超えていますね。7701行あるという事は、配列の範囲は0〜7700です。
式が違っても、例えば20-7=10+3=13ですから、「式が違うのに演算結果が同じ」事をもって何か間違っているとは言えません。まずは、その「おかしい」と思っているデータを自分で計算して、思い違いでない事を確認して下さい。
そうすると、「実際にはこれこれの値で、演算結果はこうなるはずなのに、この様な結果が出るのでおかしい」という具体的な説明ができます。回答を求めるのはその後です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

checkベストアンサー

0

きっとそういうデータだという事ではないでしょうか?

最初の式を計算可能な部分を計算すると、

x = (a4 + 2*a3 + a2 + a8 + a7)/6 

次の式は、

x = (a3 + 2*a2 + a1 + a4 + a6)/6

ですね。なんか似た感じ。見てる箇所が違いますが、意味のあるデータと思いますので、そのデータが何かが、問題と思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.42%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Python

    9750questions

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