2016-11-14 8 views
0

В настоящее время печатает значения диапазона до терминала. Мне нужно экспортировать эти значения в файл csv. "Печать S [т-1], я [т-1], R [т-1]" являются значения ...Значения диапазона экспорта Python до csv

import matplotlib.pyplot as plt 
import numpy 
beta = 0.24 
gamma = 0.142857 
Tstart = 0 
Tend = 151 
r = 0 
s = (306.8 * 10**6) 
i = (22 * 10**6) 

def compute_next_day(t,R,I,S): 
    R[t] = gamma * I[t - 1] + R[t - 1] 
    I[t] = (beta * I[t-1] * S[t-1]/(r+i+s)) - gamma * I[t-1] + I[t-1] 
    S[t] = - (beta * I[t-1] * S[t-1]/(r+i+s)) + S[t-1] 
    print S[t-1], I[t-1], R[t-1] 


def compute_entire_period(Tstart, Tend, R, I, S): 
    R[Tstart] = r 
    I[Tstart] = i 
    S[Tstart] = s 
    for t in range(Tstart + 1, Tend): 
     compute_next_day(t, R, I, S) 


R = range(Tstart, Tend) 
I = range(Tstart, Tend) 
S = range(Tstart, Tend) 
+1

numpy может иметь функцию записи в CSV-файлах или в текстовых файлах, где вы можете использовать запятую, как в CSV-файле. – furas

+1

[numpy.savetxt()] (https://docs.scipy.org/doc/numpy/reference/generated/numpy.savetxt.html) - используйте 'delimiter = ','' – furas

+0

или используйте стандартный модуль [csv] (https://docs.python.org/3/library/csv.html) – furas

ответ

0

с использованием csv library:

import csv 

beta = 0.24 
gamma = 0.142857 
Tstart = 0 
Tend = 151 
r = 0 
s = (306.8 * 10 ** 6) 
i = (22 * 10 ** 6) 


def compute_next_day(t, R, I, S): 
    R[t] = gamma * I[t - 1] + R[t - 1] 
    I[t] = (beta * I[t - 1] * S[t - 1]/(r + i + s)) - gamma * I[t - 1] + I[t - 1] 
    S[t] = - (beta * I[t - 1] * S[t - 1]/(r + i + s)) + S[t - 1] 
    return [S[t-1], I[t-1], R[t-1]] 


def compute_entire_period(Tstart, Tend, R, I, S): 
    R[Tstart] = r 
    I[Tstart] = i 
    S[Tstart] = s 
    with open('mydata.csv', 'w') as mycsvfile: 
     writer = csv.writer(mycsvfile) 
     for t in range(Tstart + 1, Tend): 
      writer.writerow(compute_next_day(t, R, I, S)) 


R = range(Tstart, Tend) 
I = range(Tstart, Tend) 
S = range(Tstart, Tend) 

compute_entire_period(Tstart, Tend, R, I, S) 
0

Что-то, как это должно работать:

def compute_next_day(t,R,I,S,): 
    ... 
    return S[t-1], I[t-1], R[t-1] # return values instead of printing to terminal 

with open('path_to_file.csv','w') as f: 
    for ... : # your choice of loop 
     vals = compute_next_day(...) # compute your values 
     f.write(','.join(vals) + '\n') # dump your values separated with ',' 
Смежные вопросы