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

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

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

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

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

解決済

Scipyのargrelmaxを使って極値を算出したが、適切な形でファイルに書き出すことが出来ない。

ShibaSamo
ShibaSamo

総合スコア15

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

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

1回答

0評価

0クリップ

199閲覧

投稿2022/01/16 14:33

前提・実現したいこと

python3.6のScipyライブラリを使って、あるデータの極値を求めた後に、そのデータをテキストファイルに書き出したいと考えています。
argrelmax()、argrelmin()という関数を使えば、Numpy配列から作ったグラフの極値のインデックスをタプルとして取得できることを知り、値は上手く取得できたのですが、ファイルに書き出す行程が上手くいきません。

発生している問題

ソースコードを実行して得られたmaxid.txtの内容はこのようになっています。

イメージ説明
実現したいのは「リストの各要素を、要素ごとに改行して書き出すこと」なのですが、コードをどういじっても上画像のように改行がなされていない状態で書き出されてしまいます。

該当のソースコード

python3.6

#!/usr/bin/env python # -*- coding: utf-8 -*- """ 包絡線を書く用 """ import numpy as np import scipy.constants as sc from scipy import signal with open('e_center.txt') as f: e_center_raw = [float(s.strip()) for s in f.readlines()] e_center_raw_n = np.array(e_center_raw) maxid = signal.argrelmax(e_center_raw_n, order=1) minid = signal.argrelmin(e_center_raw_n, order=1) e_center_env = e_center_raw_n[maxid] maxid_list = list(maxid) print(type(e_center_raw)) print(type(maxid_list)) f = open('e_center_envelope.txt', 'w') for x in e_center_env: f.write(str(x) + "\n") f.close() f2 = open('maxid.txt', 'w') for x in maxid_list: f2.write(str(x) + "\n") f2.close()

再現用のデータ

再現のために、e_center.txtの一部を掲載します。
テキストファイルにそのままコピペしていただけると動作するかと思います。

e_center.txt

0.0 0.001486350805133923 -0.001370395441008766 -0.006461896813117832 0.0035373535843143357 0.009529589100946777 -0.004863959040997524 -0.009604910281416804 0.006383766243110222 0.009204852883105241 -0.007315931035538903 -0.00804661485998421 0.007757543056704388 0.0074505017427512945 -0.009159180744849543 -0.0056122667115962935 0.00946732129565388 0.004594506318195885 -0.010875347075679444 -0.001852412310950356 0.010578854246507466 0.00021943336885932307 -0.011418268651651279 0.003346981127089012 0.010049723437427285 -0.005384553807738425 -0.009702031456003778 0.008986243488442671 0.006979481113893477 -0.010539925079383072 -0.005008565518069936 0.012568843044166625 0.0011940824172798651 -0.012316627475089369 0.0021932664084554987 0.01105415615608661 -0.005796930674191281 -0.00834797897375562 0.009202176954310727 0.0035279446187524138 -0.010091475544778131 0.00023192432424991912 0.011100960254291761 -0.006249218592027303 -0.006948449515846452 0.007713248965490809 0.004293716144453561 -0.010954991211140085 0.003615802164635918 0.007401873567806184 -0.006934483375269925

試したこと

タプルをリストに変換する際に問題があるのかと思い、Numpyのcopyとtolistを用いて一度Numpy配列に変換した後、再度tolistを使ってリストに変換するということも行いましたが、上手くいきませんでした。
copyライブラリを用いようともしましたが、サポートが終了(?)しており、インストールができませんでした。

補足情報(FW/ツールのバージョンなど)

scipy 1.5.4
numpy 1.19.5

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

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