過去にファイル内のデータのペアから 2D XY プロットを作成するために python を使用しましたが、ファイル内のデータから等高線図を作成する必要があります。ファイルは次のようになります。
<Descriptive string>
<some "random" number>
<number of X values:nx>
<Number of Y values:ny>
X1 X2 X3 X4 X5
X6 X7 X8 X9 X10
...
... Xnx
Y1 Y2 Y3 Y4 Y5
Y6 Y7 Y8 Y9 Y10
...
... Yny
Z(X1,Y1) Z(X1,Y2) Z(X1,Y3) Z(X1,Y4) Z(X1,Y5)
Z(X1,Y6) Z(X1,Y7) Z(X1,Y8) Z(X1,Y9) Z(X1,Y10)
...
...
Z(X1,Yny) Z(X2,Y1) Z(X2,Y3) Z(X2,Y4) Z(X2,Y5)
...
...
Z(X2,Yny) ...
...
...
Z(Xnx,Yny)
これまでのところ、X と Y の値を読み取ることができましたが、Z の値でさえ、おそらく最も便利な形式ではありませんでしたが、Z1 が (X1,Y1) と一致するようにそれらを適切に割り当てることができませんでした。 Z2 は (X1,Y2) で、Zny までは (X1,Yny) で、最後は Znx*ny で (Xnx,Yny) になります。これが十分に明確であることを願っています...これまでのところ、これは私が持っているコードです:
import numpy as np
# Read from .dat file:
with open("trans_acrolein_ResWVFunAP1R12.dat", "r") as f:
fl = f.readline()
xnum = f.readlines()[2]
ynum = f.readlines()[3]
# Initialize some variables to be lists.
xval = []
yval = []
# Read the values of the number of X and Y values.
for line in xnum:
px = line.split()
xval.append(int(px[0]))
for line in ynum:
py = line.split()
yval.append(int(py[0]))
linesx = np.ceil(xval/5.0)
linesy = np.ceil(yval/5.0)
linesz = np.ceil((xval*yval)/5.0)
with open("trans_acrolein_ResWVFunAP1R12.dat", "r") as f:
for line in f:
x = []
y = []
for element in line[4:3+linesx].split():
x.append(element)
for element in line[4+linesx:3+linesx+linesy].split():
y.append(element)
すべての要素を連続して読み取る方法がわからないので、最初に X 値を持つ行の数、次に Y 値を持つ行、最後に Z 値を持つ行の数を数える方法を使用しましたが、それほど多くはないと思います効率的。誰かがこれで私を助けてくれれば、本当に感謝しています。ありがとう、