我之前可能已经提出了我的问题,我找到了许多方法来解决它,但似乎没有一个方法可以解决我的问题。
我想读的数据表看起来像这样:
-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_iprint(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
答案 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
输出位于不同的行。 希望是这样的! :)