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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

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

Q&A

解決済

1回答

943閲覧

csvデータ読み込み,そのデータを内挿する

mdshiba2

総合スコア21

Python 3.x

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

0グッド

0クリップ

投稿2019/02/11 14:01

前提・実現したいこと

csvデータを読み込んで,その値をもとに,内挿をしたいです.

発生している問題

あるテキストにランダムな点から内挿をやる説明があったので,参照しながらプログラムを書きました.
作成したランダムな点でなく,csvデータにある点で内挿を行いたいのですが,プログラムの書き方が分かりません.以下が自作プログラムです.

python

1import matplotlib.pyplot as plt 2import seaborn as sns; sns.set() 3import numpy as np 4 5from sklearn.preprocessing import PolynomialFeatures 6x = np. array([2, 3, 4]) 7poly = PolynomialFeatures(3, include_bias=False) 8poly.fit_transform(x[:, None]) 9 10rng = np.random.RandomState(1) 11x = 10* rng.rand(50) 12y = np.sin(x)+0.1*rng.randn(50) 13 14 15from sklearn.linear_model import LinearRegression 16model = LinearRegression(fit_intercept=True) 17model.fit(x[:, np.newaxis], y) 18xfit = np.linspace(0, 10, 1000) 19 20from sklearn.pipeline import make_pipeline 21poly_model = make_pipeline(PolynomialFeatures(12),LinearRegression()) 22 23 24poly_model.fit(x[:, np.newaxis], y) 25yfit = poly_model.predict(xfit[:, np.newaxis]) 26 27plt.scatter(x,y) 28plt.plot(xfit, yfit) 29 30 31# 描画実行 32plt.show() 33

また,読み込みたいcsvデータは以下のものです.

csv

1x, z 20, 2 30.8, 9 41, 10 52, -1 63, 11 74, 0 85, 8 95.1, 8.3 105.3, 8.2 116, 3 127, 11 137.1, 10 147.2, 11 157.3, 10.5 168, -6 178.1, -3.9 188.15, -3.1 199, 9 2010, 2 2111, 10 2211.6, 10.2 2312, -1 2412.1, -1.2 2513, 5 2614, -2 2714.8, 6.7 2815, 7 2916, 0

また,内挿をおこない,得たグラフの各座標値(xを0.1間隔ぐらいで)をcsvデータとして得ることも行いたいです.
プログラムを書くことに慣れておらず,書き方がわからないため,ご教示頂けると幸いです.
よろしくお願いいたします.

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

python3.6を使用しています.

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

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

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

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

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

guest

回答1

0

ベストアンサー

numpy.loadtxtを使うと比較的楽でしょう。

python

1import numpy as np 2 3a = np.loadtxt("test.csv", delimiter=",", skiprows=1).T 4x = a[0] 5y = a[1] 6print(x) 7print(y) 8""" => 9[ 0. 0.8 1. 2. 3. 4. 5. 5.1 5.3 6. 7. 7.1 10 7.2 7.3 8. 8.1 8.15 9. 10. 11. 11.6 12. 12.1 13. 11 14. 14.8 15. 16. ] 12[ 2. 9. 10. -1. 11. 0. 8. 8.3 8.2 3. 11. 10. 11. 10.5 13 -6. -3.9 -3.1 9. 2. 10. 10.2 -1. -1.2 5. -2. 6.7 7. 0. ] 14"""

numpy.loadtxt — NumPy v1.15 Manual

内挿に関しては、np.linspaceなどでxを作った後、poly_modelでpredictすれば良いです。csvへの書き出しはnp.savetxtあたりで行えるでしょう。


入出力まわりだったりnumpy配列の取扱だったり、というあたりは慣れないうちはけっこうゴタゴタするので、まずは慣れるのが先という感じもしますけど。

まずある程度しくみを理解して、あとはいろいろ動かしながら試行錯誤して慣れていくしかないですね。

投稿2019/02/11 16:46

hayataka2049

総合スコア30933

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

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

mdshiba2

2019/02/17 13:10

ご回答ありがとうございます.お返事遅くなり申し訳ありません. 手を動かしながら慣れていきたいと思います. ありがとうございました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問