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

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

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

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

Python

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

Q&A

解決済

1回答

960閲覧

listからカーブフィッティングをしたい

ikayakioishii

総合スコア8

NumPy

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

Python

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

0グッド

0クリップ

投稿2021/01/29 13:40

データのファイルからカーブフィッティングしたいです.

y = np.poly1d(np.polyfit(x, y, 1))(x)

これでxを元とした整形したyの値を取れます.x,yはどちらも一次元配列です.

l =['0.0\t1.0\t-10.569\t1.835\n', '0.0\t2.0\t33.977\t-4.618\n', '12.0\t1.0\t-12.138\t1.632\n',...

のような要素が[a,b,c,d]となっています.
ここでbの要素のそれぞれのc,dから新しいdを上記の計算で求めたいです.

やりたいこと
・bの値をsorted(l, key=lambda x:x[1])で並び替える
・並び替えたlをbの要素ごとに分ける
・分けた要素ごとに上記のカーブフィッティングの式を当てはめる

自分でやってみたのですがうまくいきませんでした.
並び替えて要素に分け,配列を作ることが難しいです.
教えていただきたいです.お願いします.

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

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

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

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

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

guest

回答1

0

ベストアンサー

並び替えて要素に分け,配列を作ることが難しいです、の部分はこれぐらいでしょうか。

python

1>>> print(l) 2['10.0\t6.0\t-12.136\t-2.499\n', '9.0\t5.0\t4.880\t-1.051\n', '3.0\t5.0\t6.072\t-0.630\n', '7.0\t3.0\t25.789\t0.801\n', '6.0\t3.0\t-13.696\t2.702\n', '4.0\t1.0\t-7.623\t-3.802\n', '5.0\t1.0\t15.421\t-4.963\n', '10.0\t2.0\t-13.247\t-2.756\n', '1.0\t3.0\t-0.897\t-3.588\n', '6.0\t3.0\t-1.648\t2.958\n', '6.0\t1.0\t-15.427\t-3.081\n', '7.0\t3.0\t19.761\t-1.834\n', '7.0\t5.0\t1.221\t2.980\n', '7.0\t6.0\t-0.506\t-0.423\n', '10.0\t4.0\t26.638\t-2.038\n', '5.0\t6.0\t-10.222\t-3.705\n', '6.0\t3.0\t26.416\t3.684\n', '5.0\t1.0\t11.384\t3.758\n', '4.0\t6.0\t7.098\t-0.432\n', '5.0\t2.0\t17.753\t-3.231\n'] 3>>> 4>>> d = {} 5>>> for x in l: 6... f = float(x.split('\t')[1]) 7... if f in d: 8... d[f].append(x) 9... else: 10... d[f] = [x] 11... 12>>> sl = sorted(list(d.items()), key=lambda x: x[0]) 13>>> 14>>> for i in sl: 15... print(i[0], ':') 16... print(i[1], '\n') 17... 181.0 : 19['4.0\t1.0\t-7.623\t-3.802\n', '5.0\t1.0\t15.421\t-4.963\n', '6.0\t1.0\t-15.427\t-3.081\n', '5.0\t1.0\t11.384\t3.758\n'] 20 212.0 : 22['10.0\t2.0\t-13.247\t-2.756\n', '5.0\t2.0\t17.753\t-3.231\n'] 23 243.0 : 25['7.0\t3.0\t25.789\t0.801\n', '6.0\t3.0\t-13.696\t2.702\n', '1.0\t3.0\t-0.897\t-3.588\n', '6.0\t3.0\t-1.648\t2.958\n', '7.0\t3.0\t19.761\t-1.834\n', '6.0\t3.0\t26.416\t3.684\n'] 26 274.0 : 28['10.0\t4.0\t26.638\t-2.038\n'] 29 305.0 : 31['9.0\t5.0\t4.880\t-1.051\n', '3.0\t5.0\t6.072\t-0.630\n', '7.0\t5.0\t1.221\t2.980\n'] 32 336.0 : 34['10.0\t6.0\t-12.136\t-2.499\n', '7.0\t6.0\t-0.506\t-0.423\n', '5.0\t6.0\t-10.222\t-3.705\n', '4.0\t6.0\t7.098\t-0.432\n']

投稿2021/01/29 22:40

ppaul

総合スコア24670

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

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

ikayakioishii

2021/01/31 14:11

手助けありがとうございます. あとは自分でやってみます.
ppaul

2021/01/31 15:05

がんばってください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問