1

Pythonコードでは、次のことを行います:

x1=[]
y1=[]
y2=[]
y3=[]
y4=[]



for line in res_file_1.readlines():
    ll=string.split(line)
    x1.append(float(ll[0]))
    y1.append(float(ll[1]))
    y2.append(float(ll[2]))
    y3.append(float(ll[3]))
    y4.append(float(ll[4]))

したがって、ファイルの 4 列を読み取り、異なる "y" 配列に値を格納します。入力ファイルに 4 列、16 列、または 2000 列が含まれるかどうかわからない場合など、これをより一般的に行うにはどうすればよいでしょうか。

アップデート:

後で、matplotlib を使用してデータをプロットする必要があるため、通常は次のようにします。

ax.plot(x1,y1,'ks',color='red')
ax.plot(x1,y2,'ks',color='green')
ax.plot(x1,y3,'ks',color='blue')

未定義の列数 (および色) のプロットを行うにはどうすればよいですか?

4

4 に答える 4

3

次のようなデータファイルがある場合input.csv:

x1, y1, y2, y3, y4
A, 3, 6, 7, 1
B, 4, 5, 9, 0
X, 7, 2, 8, 5
C, 4, 3, 2, 1

パンダの場合、次のようにします。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('input.csv', delimiter=',', index_col='x1')
df.plot(marker='s')
plt.show()

そして、あなたはこのプロットを得るでしょう:

ここに画像の説明を入力

于 2012-07-04T18:05:59.207 に答える
2
from itertools import izip_longest
with open(filename, 'r') as f:
    data = list(izip_longest(*[x.split() for x in f]))

これにより、各タプルに 1 つの列の値が含まれるタプルのリストが作成されます。

于 2012-07-04T15:04:58.903 に答える
2

列を使用して s にnumpy.genfromtxt読み込みます。recarrayプロットのために列をループ処理する場合は、使用recarray.dtype.namesして各列を取得します。

于 2012-07-04T15:28:53.993 に答える
1

キーが x で、値が y のリストである辞書を使用します。

data = {}
for line in res_file_1.readlines():
    ll = line.split()
    data[ll[0]] = ll[1:]
于 2012-07-04T15:04:51.700 に答える