我的問題可能以前已經問過了,而且我找到了解決它的多種方法,但似乎沒有一個方法可以解決我的問題。如何從一組數據中創建一個數組/矩陣
數據表我想讀如下所示:
-6 -6 -3.74767E-003 -3.74767E-003 5.30000E-003 1.87773E+001 1.87008E+001 1.87711E+001 1.86925E+001 -0.039128%/n
-6 -5 -3.74767E-003 -3.12305E-003 4.87837E-003 1.87773E+001 1.55840E+001 1.87728E+001 1.55787E+001 -0.028419%/n
(注意,在最後一行我責備它是造成問題的%)。我試圖分裂,但它總是歸結到'list' object has no attribute 'split'
錯誤消息的變體。
我想創建以下面的方式以矩陣numpy的數組:
(x1 y1 0 0
0 0 x1 y1
:
:
:
xn yn 0 0
0 0 xn yn)
我附加了一些我試圖這樣做的代碼:
import math
import numpy as np
import matplotlib.pyplot as plt
def main():
d=reader()
XY_real=projected(d)
matrix=matrix_f(d)
def reader():
#loads the values into d:
d=np.genfromtxt("Eris-106-Cam1.txt",delimiter='',dtype=float)
#print(d[0][0])
return d
def projected(d):
#Sets XY_real as value.
Dummy_array = np.asarray(d)
#Load x/y values:
i=1
X_real_array0=np.array([Dummy_array[0][7]])
Y_real_array0=np.array([Dummy_array[0][8]])
XY_real_array=np.empty([1,1])
while i<169:
x_real=float(Dummy_array[i][7])
y_real=float(Dummy_array[i][8])
#XY Array:
X_real=np.array([x_real])
XY_real_array=np.append([[XY_real_array]],[[X_real]])
Y_real=np.array([y_real])
XY_real_array=np.append([[XY_real_array]],[[Y_real]])
i=i+1
print type(XY_real_array)
def matrix_f(d):
Dummy_array = np.asarray(d)
x0=float(Dummy_array[0][2])
y0=float(Dummy_array[0][3])
matrix=np.array([[x0,y0,0,0],[0,0,x0,y0]])
i=0
while i < 169:
x=float(Dummy_array[i][2])
y=float(Dummy_array[i][3])
matrix0=np.array([[x,y,0,0],[0,0,x,y]])
matrix=np.append([[matrix]],[[matrix0]])
i=i+1
print(matrix)
main()
這將產生所需要的矩陣:
[-0.00374767 -0.00374767 0. ..., 0. 0.00374767
0.00374767]
是:[x_i y_i 0 0 ... 0 0 x_i y_i]
現在,如果我試圖打電話與X_I之一:
print(matrix[0][0])
*File "/home/sebo/Documents/reader.py", line 72, in matrix_f
print(matrix[0][0])
IndexError: invalid index to scalar variable.*
- >這正好當我試圖找到一個僞逆上。我假設問題來自我加載數字的方式,因爲當我打印矩陣時,您可以看到這些值不會以逗號分隔!這是因爲我認爲它們存儲在數組中(?)我可能是完全的,但請幫助我:D
可能你也許改寫這更好的,對我來說,似乎有點不清楚你想要做什麼(爲什麼你想有一個二維數組) – Guillaume
您好謝謝,我試圖讓x和y的值來自Zemax文件。 Zemax文件看起來像我發佈的。實際的問題是,我從來沒有得到的數字,存儲在我的數據文件作爲浮動,它總是返回列表(只有在它的數字,但我試着去使用被接受的numpy的程序,他們所需要的純數) – Sebastiano1991
你好,我徹底改變了我的問題的佈局,我很抱歉,如果我和你全亂,但因爲它是在我 – Sebastiano1991