[英]Writing values after for loop in csv file
我有以下代码:
from math import *
from scipy.special import *
import matplotlib.pyplot as plt
import csv
## Definition der Parameter für Druckgleichung nach Rudnicki (1986) ##
q = 6.0/1000 # Fluidmenge pro Fläche und Zeit [l/s]
rhof = 1000 # Dichte Flüssigkeit [kg/m³]
lameu = 11.2*10**9 # Lamé-Parameter, undrained [Pa]
lame = 8.4*10**9 # Lamé-Parameter, drained [Pa]
pi # durch Pythonmodul "math" gegeben
alpha = 0.65 # Biot-Willis-Koeffizient
G = 8.4*10**9 # Schermodul [Pa]
k = 1.0e-15 # Permeabilität [m²] bzw. [Darcy]
eta = 0.001 # Viskosität des Fluids [Pa*s]
t = 1000*24*3600 # Zeit in [s]
## Beziehungen der Parameter untereinander ##
kappa = k/eta # Berechnung der Permeabilität nach Rudnicki (1986), [m³*s/kg]
print "kappa ist:",kappa # Ausgabe Permabilität
c = (kappa*(lameu-lame)*(lame+2*G))/((alpha**2)*(lameu+2*G)) # Berechnung der Diffusivität
print "c ist:",c # Ausgabe der Diffusivität
## Bereiche der Achsen in [m] ##
#def drange(start, stop, step):
# r = start
# while r <= stop:
# yield r
# r += step
xmin = 1
xmax = 20
ymin = 1
ymax = 20
## Druckberechnung um Bohrung ##
for x in range (xmin,xmax,1):
for y in range (ymin,ymax,1):
r = sqrt(x**2+y**2)
P = (q/(rhof*4*pi*kappa))*(expn(1,r**2/(4*c*t)))
z = P/1e6
#print x, " ", y, " ", z
对于我的输出,我想将x,y和z的值写入一个csv文件中。 看起来应该像是单行内一个单元格中的每个x值和同一列内某个单元格中的每个y值,以便可以为每个x / y组合显示一个z值。 它看起来应该像这样:
x x1 ...
yz(x,y)z(x1,y)...
y1 z(x,y1)z(x1,y1)...
……
我是csv模块的新手,并不真正习惯它,尤其是如何在正确的位置设置值以及何时使用它(例如,在循环内或循环后)。 这可能吗? 还是只能看起来像这样(类似于我过时的印刷品):
XYZ(X,Y)
x y1 z(x,y1)
x y2 z(x,y2)... ...
抱歉,这种非常奇怪且丑陋的格式,但我想您会明白的:)
与往常一样,任何帮助将不胜感激!
使用csv模块,通常必须一次写入整个行。 我相信这段代码(替换您的final for循环)将打印出您想要的输出:
def your_function(x,y):
r = sqrt(x**2+y**2)
P = (q/(rhof*4*pi*kappa))*(expn(1,r**2/(4*c*t)))
z = P/1e6
x_range = range(xmin,xmax,1)
y_range = range(ymin,ymax,1)
print(x_range)
for y in y_range:
this_row = [y] + [your_function(x,y) for x in x_range]
print(this_row)
如果这样做符合您的要求,则可以通过写入CSV替换打印功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.