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

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

新規登録して質問してみよう
ただいま回答率
85.50%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

NumPy

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

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

Q&A

解決済

2回答

6774閲覧

reshape list 対応の仕方

11390

総合スコア20

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

NumPy

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

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

0グッド

0クリップ

投稿2019/11/01 06:00

編集2019/11/13 06:03

現在以下のプログラムで試行錯誤しております。
このプログラムは(x.z)の二次元ファイルのテキストを読み込んで、buta.txtに(x.z)の情報を
[(例)
xが一の時の(x,z)
xが二の時の(x,z)
xが三の時の(x,z)
・・・・
xがnの時の(x,z) xを任意の数で]
保存して、別にプロットするというものです。

import matplotlib.pyplot as plt # maplotlibのpyplotをpltという名前でimportする import numpy as np x_list=[] # x_listを定義 (空のリストを作成) z_list=[] # z_listを定義 f=open(r'C:\Users\Administartor\Desktop\oosaka\python\真のデータ.txt') # プロットしたいデータが入っているファイルをr(読み込み) t(テキスト)モードで読み込む ## データを読み込み,x_listとy_listに値を格納する for line in f: data = line[:-1].split(' ') x_list.append(float(data[0])) z_list.append(float(data[1])) ### 描画する x_list = x_list.tolist() z_list = z_list.tolist() np.savetxt("buta.txt", np.hstack([x_list.reshape(-1,1), z_list.reshape(-1,1)]), delimiter=",") plt.plot(x_list, z_list) #プロットするためのデータ指定: ここではx軸にx_list,z軸にz_listを指定。折れ線グラフ plt.plot(x_list, z_list,color='bLUE',linewidth=4.0) #赤色で出力.線の太さを4.0pt plt.xlabel('X') # x軸のラベル plt.ylabel('Z') # y軸のラベル #plt.legend(loc='best') # legend # その他,描画用オプション plt.xticks(fontsize=10) plt.yticks(fontsize=10) plt.grid(True) #グラフの枠を作成 plt.show() # 描画結果を出力する。必ず書く。

reshapeはlistが対応していないみたいで、エラーが出てしまい調べてみると
tolist()という関数が使えるという情報がありました。しかしながら以下のようなエラーが出てどうやら対応していないのかそれとも私のプログラムが間違っているのか、わからず質問することにしました。
ご教授のほどよろしくお願いいたします。

Traceback (most recent call last): File "<ipython-input-17-e9dd3566947c>", line 1, in <module> runfile('C:/Users/Administartor/Desktop/oosaka/python/表示成功(txt変更) - コピー.py', wdir='C:/Users/Administartor/Desktop/oosaka/python') File "C:\Users\Administartor\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile execfile(filename, namespace) File "C:\Users\Administartor\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile exec(compile(f.read(), filename, 'exec'), namespace) File "C:/Users/Administartor/Desktop/oosaka/python/表示成功(txt変更) - コピー.py", line 25, in <module> x_list = x_list.tolist() AttributeError: 'list' object has no attribute 'tolist'

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

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

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

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

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

guest

回答2

0

import matplotlib.pyplot as plt # maplotlibのpyplotをpltという名前でimportする import numpy as np x_list=[] # x_listを定義 (空のリストを作成) z_list=[] # z_listを定義 f=open(r'C:\Users\Administartor\Desktop\oosaka\python\真のデータ.txt') # プロットしたいデータが入っているファイルをr(読み込み) t(テキスト)モードで読み込む ## データを読み込み,x_listとy_listに値を格納する for line in f: data = line[:-1].split(' ') x_list.append(float(data[0])) z_list.append(float(data[1])) ### 描画する x_list = np.array(x_list) # x_lstを定義 (空のリストを作成) z_list = np.array(z_list) # z_listを定義 np.savetxt("buta.txt", np.hstack([x_list.reshape(-1,1), z_list.reshape(-1,1)]), delimiter=",") plt.plot(x_list, z_list) #プロットするためのデータ指定: ここではx軸にx_list,z軸にz_listを指定。折れ線グラフ plt.plot(x_list, z_list,color='bLUE',linewidth=4.0) #赤色で出力.線の太さを4.0pt plt.xlabel('X') # x軸のラベル plt.ylabel('Z') # y軸のラベル #plt.legend(loc='best') # legend # その他,描画用オプション plt.xticks(fontsize=10) plt.yticks(fontsize=10) plt.grid(True) #グラフの枠を作成 plt.show() # 描画結果を出力する。必ず書く。

投稿2019/11/05 04:38

編集2019/11/13 06:04
11390

総合スコア20

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

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

0

ベストアンサー

tolistはnumpyの配列からlistに変換するメソッドです。

listのデータからnumpy配列を生成する場合は、numpy.array(a_list)のようにされると良いかと思います。

python

1x_list = np.array(x_list) 2z_list = np.array(z_list)

Python

1import matplotlib.pyplot as plt # maplotlibのpyplotをpltという名前でimportする 2import numpy as np 3 4x_list=[] # x_listを定義 (空のリストを作成) 5z_list=[] # z_listを定義 6 7f=open(r'C:\Users\Administartor\Desktop\田村\python\真のデータ.txt') # プロットしたいデータが入っているファイルをr(読み込み) t(テキスト)モードで読み込む 8 9## データを読み込み,x_listとy_listに値を格納する 10for line in f: 11 data = line[:-1].split(' ') 12 x_list.append(float(data[0])) 13 z_list.append(float(data[1])) 14 15### 描画する 16x_list = np.array(x_list) 17z_list = np.array(z_list) 18np.savetxt("buta.txt", np.hstack([x_list.reshape(-1,1), z_list.reshape(-1,1)]), delimiter=",") 19 20plt.plot(x_list, z_list) #プロットするためのデータ指定: ここではx軸にx_list,z軸にz_listを指定。折れ線グラフ 21plt.plot(x_list, z_list,color='bLUE',linewidth=4.0) #赤色で出力.線の太さを4.0pt 22 23plt.xlabel('X') # x軸のラベル 24plt.ylabel('Z') # y軸のラベル 25#plt.legend(loc='best') # legend 26 27# その他,描画用オプション 28plt.xticks(fontsize=10) 29plt.yticks(fontsize=10) 30plt.grid(True) #グラフの枠を作成 31 32plt.show() # 描画結果を出力する。必ず書く。

投稿2019/11/01 08:12

編集2019/11/05 04:35
hayataka2049

総合スコア30933

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

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

11390

2019/11/05 03:42

``` Traceback (most recent call last): File "<ipython-input-8-e9dd3566947c>", line 1, in <module> runfile('C:/Users/Administartor/Desktop/田村/python/表示成功(txt変更) - コピー.py', wdir='C:/Users/Administartor/Desktop/田村/python') File "C:\Users\Administartor\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile execfile(filename, namespace) File "C:\Users\Administartor\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile exec(compile(f.read(), filename, 'exec'), namespace) File "C:/Users/Administartor/Desktop/田村/python/表示成功(txt変更) - コピー.py", line 23, in <module> x_list.append(float(data[0])) AttributeError: 'numpy.ndarray' object has no attribute 'append' ``` こういったエラーが出ました。
hayataka2049

2019/11/05 04:26

修正後のコード全体を質問文に掲載してください。
hayataka2049

2019/11/05 04:27

もしかして、forループの前に挿入しましたか?
11390

2019/11/05 04:33

``` import matplotlib.pyplot as plt # maplotlibのpyplotをpltという名前でimportする import numpy as np x_list=[] # x_listを定義 (空のリストを作成) z_list=[] # z_listを定義 x_list = np.array(x_list) # x_lstを定義 (空のリストを作成) z_list = np.array(z_list) # z_listを定義 f=open(r'C:\Users\Administartor\Desktop\田村\python\真のデータ.txt') # プロットしたいデータが入っているファイルをr(読み込み) t(テキスト)モードで読み込む ## データを読み込み,x_listとy_listに値を格納する for line in f: data = line[:-1].split(' ') x_list.append(float(data[0])) z_list.append(float(data[1])) ### 描画する np.savetxt("buta.txt", np.hstack([x_list.reshape(-1,1), z_list.reshape(-1,1)]), delimiter=",") plt.plot(x_list, z_list) #プロットするためのデータ指定: ここではx軸にx_list,z軸にz_listを指定。折れ線グラフ plt.plot(x_list, z_list,color='bLUE',linewidth=4.0) #赤色で出力.線の太さを4.0pt plt.xlabel('X') # x軸のラベル plt.ylabel('Z') # y軸のラベル #plt.legend(loc='best') # legend # その他,描画用オプション plt.xticks(fontsize=10) plt.yticks(fontsize=10) plt.grid(True) #グラフの枠を作成 plt.show() # 描画結果を出力する。必ず書く。 ``` はい前に挿入しました
hayataka2049

2019/11/05 04:34

numpy配列に対してappendは使えません。forループが終わってから変換するようにしてください。
hayataka2049

2019/11/05 04:36

また、コメント欄はmarkdownは効かないためコードを貼り付けるには向いていません。次回からは質問文の編集で対応してください。
11390

2019/11/05 04:37

やっぱり使えないんですね。 ありがとうございます!いけました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問