【问题标题】:Python export range values to csvPython 将范围值导出到 csv
【发布时间】:2017-03-27 15:55:14
【问题描述】:

当前将范围值打印到终端。我需要将这些值导出到 csv 文件。 "print S[t-1], I[t-1], R[t-1]" 是值...

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)

【问题讨论】:

  • numpy 可能具有写入 CSV 文件或文本文件的功能,您可以在 CSV 文件中使用逗号。
  • numpy.savetxt() - 使用delimiter=','
  • 或使用标准模块csv
  • 文档是你的朋友 - docs.python.org/3/library/csv.html
  • 为什么是numpy 标签?

标签: python arrays python-3.x csv numpy


【解决方案1】:

如果要将数据保存为 CSV,请使用 dsv 库:

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)

【讨论】:

    【解决方案2】:

    这样的事情应该可以工作:

    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 ','
    

    【讨论】:

      猜你喜欢
      • 2015-02-15
      • 2016-02-03
      • 2019-03-10
      • 2022-01-21
      • 2016-11-10
      • 2019-11-09
      • 1970-01-01
      • 1970-01-01
      • 2021-07-02
      相关资源
      最近更新 更多