私はこの問題を克服しています。何度も試してみましたが、私は(私はPythonの初心者であるので問題はないはずです)。データ型float64の.xyzファイルの3x3行列を抽出するか、1つの3x3行列に3つの1x3行列をマージする
は次のようなものになります8ポイントと私のinput.xyzファイル、あります:
15.486586, 46.798954, -6.232800, 15.445764, 46.807576, -6.249205, -0.040822,0.008622, -0.016405, 0.044832;
6.233575, 48.083754, -4.223557, 6.187027, 48.090785, -4.243389, -0.046548, 0.007031, -0.019832, 0.051083;
-2.159452, 40.818712, -3.104244, -2.200572, 40.818489, -3.120266, -0.041120,-0.000223, -0.016022, 0.044132;
45.554111, 131.689322, 1.525740, 45.452954, 131.721406, 1.483290, -0.101157,0.032084, -0.042450, 0.114298;
28.315109, 146.107918, 2.897549, 28.235633, 146.131800, 2.864060, -0.079476, 0.023882, -0.033489, 0.089489;
7.303209, 138.223347, 4.702106, 7.250850, 138.242379, 4.679564, -0.052359, 0.019032, -0.022542, 0.060098;
-32.211983, 148.909744, 12.919538, -32.279077, 148.907541, 12.876267,-0.067095, -0.002203, -0.043271, 0.079868;
-48.926024, 180.295215, 20.142896, -49.008547, 180.275117, 20.127614,-0.082523, -0.020098, -0.015282, 0.086299;
を ";"各点を区切り、1点の最初の3つの値はx、y、zの値です。ですから、私はxyz値で3点を取って、Pythonで行列に書きます。 これは私がこれまでに得たものである。これに
# creating empty list for append
xyz_matrx = []
counter = 0
for line in xyz:
counter += 1
# counter to get only first three columns
if counter%4 == 0:
break
# deleting whitespaces and selecting wanted data
linevalues = line.strip().split(",")
x = (linevalues[0:1])
y = (linevalues[1:2])
z = (linevalues[2:3])
xyz_matrx.append(x)
#flatten because xyz_matrix is a list within list
# values converting into float64, because string won't work for following
#work
flattenedx = [val for sublist in xyz_matrx for val in sublist]
matr_flatx = [float(i) for i in flattenedx]
A_matrx = mat(matr_flatx)
、私は各点を表す行列では水平ですが、私はマトリックス内に3つの列をしたいXYZポイント、と1×3行列を取得し、 xyz値を表す行、データ型float64の3x3行列。 インデックスを使って何かを変更すると、string88行列しか得られません。 2つの他の点についてもう2つのリストを作成することができます.3つの1x3行列がありますが、二次元行列を持たないため、「。append」は機能しません。
私のコードはあまり効率的ではありませんが、誰かが私の問題を理解し、私を助けてくれることを願っています。
ショート:入力.xyzファイルがあります。すべてのポイントの最初の3つの値(x、y、z座標)のみが関連しています。xyzの3つの点と、 3x3行列(最初の列垂直:最初の点、xyz、2番目の列の垂直:xyzの2番目の点、3番目の点のxyzが垂直の3番目の点)では、データ型はfloat64でなければなりません。
は最初のものはすでに私のためにそれをやった、私はちょうど「matrix_fin =マット(xyz_matrix)」を追加する必要がありましたし、私の行列だった、非常に多くのピーターをありがとう私が望むように。 – Anna