2015-11-05 267 views
-1

我的問題可能以前已經問過了,而且我找到了解決它的多種方法,但似乎沒有一個方法可以解決我的問題。如何從一組數據中創建一個數組/矩陣

數據表我想讀如下所示:

-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

+0

可能你也許改寫這更好的,對我來說,似乎有點不清楚你想要做什麼(爲什麼你想有一個二維數組) – Guillaume

+0

您好謝謝,我試圖讓x和y的值來自Zemax文件。 Zemax文件看起來像我發佈的。實際的問題是,我從來沒有得到的數字,存儲在我的數據文件作爲浮動,它總是返回列表(只有在它的數字,但我試着去使用被接受的numpy的程序,他們所需要的純數) – Sebastiano1991

+0

你好,我徹底改變了我的問題的佈局,我很抱歉,如果我和你全亂,但因爲它是在我 – Sebastiano1991

回答

1

我試着用我的代碼,基本的字符串操作概念和它的工作的輸入。代碼連同輸入和輸出一起附加。

input = raw_input() 
numbers=input.split() 
nos=list() 

for i in numbers: 
    nos.append(float(i)) 

for i in nos: 
    print i 

輸入是

-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 -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

而獲得的輸出是

-6.0 -6.0 -0.00374767 -0.00374767 0.0053 18.7773 18.7008 18.7711 18.6925 -0.039128 -6.0 -5.0 -0.00374767 -0.00312305 0.00487837 18.7773 15.584 18.7728 15.5787 -0.028419

輸出i s在不同的路線。 希望就是這樣!:)

+0

嘿感謝,但是,當我試着去比它轉換爲np.array我仍然有同樣的問題....裏面的數組值作爲列表仍保存並不像浮... :(我用np.array& np.asarray做 – Sebastiano1991

+0

你好,我徹底改變了我的問題的佈局,我很抱歉,如果我和你全亂,但因爲它是在我面前那我的問題 – Sebastiano1991

相關問題