2015-11-05 220 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

相关问题