2013-11-13 3 views
2

Я вычислил средние значения нескольких списков. Теперь я хотел бы сохранить данные в файле txt или csv. Вот мой подход:Сохранение поплавков в файл

k=range(8,15) 
for i in k: 
    q=range(i) 
    g=mean(q)  
    print g   
    savetxt('mean_values.txt', g) 

Но это дает мне IndexError: tuple index out of range. Я думаю, это потому, что savetxt нужен массив, но g conatins плавает. Но даже когда я определяю массив g_, я в конечном итоге с той же ошибки:

k=range(8,15) 
for i in k: 
    q=range(i) 
    g=mean(q)  
    g_=array(g)  
    print g_ 
    savetxt('mean_values.txt', g_) 

Где подвох?

ответ

2

С вашей первой попытки вы пытаетесь сохранить переменную numpy.float64, и в документации указано, что numpy.savetxt ожидает объект array_like.

Во второй попытке вы пропустили скобки, чтобы указать матрицу g_=array([g]), однако если вы сохраните txt внутри цикла, вы будете каждый раз переписывать свой выходной файл.

Я думаю, это то, что вы хотите:

import numpy as np 

g = list() 
k = range(8,15) 
for i in k: 
    q = range(i) 
    g.append(np.mean(q)) 

np.savetxt('myfile.txt', np.array(g), fmt='%.2f') 

Выход myfile.txt:

3.50 
4.00 
4.50 
5.00 
5.50 
6.00 
6.50 
0

Используйте (g,) вместо g, чтобы сделать его кортежем, содержащим один поплавок.

+0

, который будет печатать только среднее значение последнего списка в txt-файле. Я хотел бы иметь список со всеми средними значениями. – MartyMcFly

1
myFile = open("mean_values.csv","w") 
myFile.write("ID" + "," + "Mean Value" +"\n") //column headers 
k=range(8,15) 
for i in k: 
    q=range(i) 
    g=str(mean(q)) 
    myFile.write(str(i) + "," + g +"\n") 
myFile.close() 

должно дать вам 2 колонки при открытии в Excel. Один с идентификатором один со средним значением

Смежные вопросы