如何从一组数据创建数组/矩阵

时间:2015-11-05 09:51:54

标签: python arrays numpy

我之前可能已经提出了我的问题,我找到了许多方法来解决它,但似乎没有一个方法可以解决我的问题。

我想读的数据表看起来像这样:

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

- &GT;当我试图找到伪逆时,这种情况继续存在。我假设问题源于我加载数字的方式,因为当我打印矩阵时,您可以看到值不是用逗号分隔的!这是因为我认为它们存储在数组中的列表中(?)我可能完全存在,但请帮助我:D

1 个答案:

答案 0 :(得分: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.12305 E-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

输出位于不同的行。 希望是这样的! :)