2017-10-15 15 views
0

J'ai pred_data.txt commeAccès au tableau de nombre à partir du fichier en Python

19.08541,17.41787,16.59118,16.03507,15.68560

20.01880,18.21,19.48975,19.32,19.29945

17.32453,17.434,15.4253,12.422,11.4311

f=open('pred_data.txt','r') 
for value in f: 
    exam=np.array(value) 
    pred=clf.predict(exam) 
    print(pred) 

Quand je cours, je me suis

ValueError: could not convert string to float:'19.08541,17.41787,16.59118,16.03507,15.68560\n'

Mais quand j'essaie comme ceci: example=np.array([19.08541,17.41787,16.59118,16.03507,15.68560]) pred=clf.predict(example)

J'ai obtenu la sortie prévue. Comment accéder aux données du fichier pour obtenir une sortie?

Répondre

0

Je n'ai pas testé cela, mais cela ne va-t-il pas aider à diviser la ligne/valeur dans un tableau au préalable? Je veux dire

for value in f: 
    exam=np.array(value.split(',')) 
    ... 

De cette façon, il serait plus facile de convertir une liste si les chaînes dans une liste de chars au lieu de convertir une gamme complète de flotteurs sous forme de chaînes.

0

Lorsque vous lisez une ligne du fichier, elle apparaît sous forme de str. Donc, dans votre exemple ceci:

for value in f: 
    np.array(value) 

est le même que ceci:

np.array('19.08541,17.41787,16.59118,16.03507,15.68560\n') 

Vous devez vous débarrasser de la \n avec la bande et de briser cela en unités réelles en utilisant division:

values_strs = value.strip().split(',') 

Mais cela vous laissera une liste de strs. Il est préférable de jeter ceux aussi bien à l'aide float:

# This is a comprehension. It's a bit clearer and more obvious than 
# calling `map(float, value.strip().split(','))`, but they boil down 
# to a similar idea. 
values_flt = [float(v) for v in value.strip().split(',')] 

Au total, vous pouvez simplement simplifier à:

exam = np.array(float(v) for v in value.strip().split(',')) 
+0

Quand je 'examen = np.array (flotteur (v) v dans value.strip(). Split (''))' Je suis comme ça à 0x00000266DAF54410> dans ' impression (examen) ' –

0

Utilisez la fonction loadtxt de Numpy.

import numpy as np 
np_array = np.loadtxt('pre_data.txt', delimiter=',')