Python中想要利用一个方程计算1-12月各个月份的热扩散值,但是现只会分别计算2月份和其他除2月外月份的值,这是我分别计算的代码,是可以正常运行的,先放上数据格式
下面是我计算1、3-12月的代码
[]([](
import pandas as pd
import numpy as np
csv=pd.read_csv("C:\\Users\86139\Desktop/NADORS.csv",header=0,encoding="unicode_escape")
csv= csv.values
year=np.array(csv[:, 0])
month=np.array(csv[:, 1])
day=np.array(csv[:, 2])
tem20=np.array(csv[:, 3])
tem50=np.array(csv[:, 4])
tem100=np.array(csv[:, 5])
tem200=np.array(csv[:, 6])
dep=[0.2,0.5,1.0,2.0]
d2050=[]
d50100=[]
d100200=[]
years=np.arange(2010,2017)
years1=[2010,2011,2013,2014,2015]
years2=[2012,2016]
months=np.arange(1,13)
days=np.arange(1,32)
a=[1,3,5,7,8,10,12]
b=[4,6,9,11]
c=[2]
years
for i in years:
for j in range(1,13):
temm20=[]
temm50=[]
temm100=[]
temm200=[]
if j in a :
for k in range(1,32):
temm20.append(np.mean(tem20[np.where((year==i)&(month==j)&(day==k))]))
temm50.append(np.mean(tem50[np.where((year==i)&(month==j)&(day==k))]))
temm100.append(np.mean(tem100[np.where((year==i)&(month==j)&(day==k))]))
temm200.append(np.mean(tem200[np.where((year==i)&(month==j)&(day==k))]))
d2050.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm50)-np.min(temm50))/(np.max(temm20)-np.min(temm20)))/(-1)/(dep[1]-dep[0]))**2)*(10**6))
d50100.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm100)-np.min(temm100))/(np.max(temm50)-np.min(temm50)))/(-1)/(dep[2]-dep[1]))**2)*(10**6))
d100200.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm200)-np.min(temm200))/(np.max(temm100)-np.min(temm100)))/(-1)/(dep[3]-dep[2]))**2)*(10**6))
if j in b:
for k in range(1,31):
temm20.append(np.mean(tem20[np.where((year==i)&(month==j)&(day==k))]))
temm50.append(np.mean(tem50[np.where((year==i)&(month==j)&(day==k))]))
temm100.append(np.mean(tem100[np.where((year==i)&(month==j)&(day==k))]))
temm200.append(np.mean(tem200[np.where((year==i)&(month==j)&(day==k))]))
d2050.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm50)-np.min(temm50))/(np.max(temm20)-np.min(temm20)))/(-1)/(dep[1]-dep[0]))**2)*(10**6))
d50100.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm100)-np.min(temm100))/(np.max(temm50)-np.min(temm50)))/(-1)/(dep[2]-dep[1]))**2)*(10**6))
d100200.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm200)-np.min(temm200))/(np.max(temm100)-np.min(temm100)))/(-1)/(dep[3]-dep[2]))**2)*(10**6))
frame2={'d20-50':d2050,'d50-100':d50100,'d100-200':d100200}
dataframe2=pd.DataFrame(frame2)
dataframe2
dataframe2.to_csv("C:\\Users\\86139\\Desktop/NADORSdataframeWITHOUT2.csv")
```))
下面是我计算2月份的代码后边的计算部分
```python
for i in years:
for j in c:
temm20=[]
temm50=[]
temm100=[]
temm200=[]
if i in years1 :
for k in range(1,29):
temm20.append(np.mean(tem20[np.where((year==i)&(month==j)&(day==k))]))
temm50.append(np.mean(tem50[np.where((year==i)&(month==j)&(day==k))]))
temm100.append(np.mean(tem100[np.where((year==i)&(month==j)&(day==k))]))
temm200.append(np.mean(tem200[np.where((year==i)&(month==j)&(day==k))]))
d2050.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm50)-np.min(temm50))/(np.max(temm20)-np.min(temm20)))/(-1)/(dep[1]-dep[0]))**2)*(10**6))
d50100.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm100)-np.min(temm100))/(np.max(temm50)-np.min(temm50)))/(-1)/(dep[2]-dep[1]))**2)*(10**6))
d100200.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm200)-np.min(temm200))/(np.max(temm100)-np.min(temm100)))/(-1)/(dep[3]-dep[2]))**2)*(10**6))
if i in years2:
for k in range(1,30):
temm20.append(np.mean(tem20[np.where((year==i)&(month==j)&(day==k))]))
temm50.append(np.mean(tem50[np.where((year==i)&(month==j)&(day==k))]))
temm100.append(np.mean(tem100[np.where((year==i)&(month==j)&(day==k))]))
temm200.append(np.mean(tem200[np.where((year==i)&(month==j)&(day==k))]))
d2050.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm50)-np.min(temm50))/(np.max(temm20)-np.min(temm20)))/(-1)/(dep[1]-dep[0]))**2)*(10**6))
d50100.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm100)-np.min(temm100))/(np.max(temm50)-np.min(temm50)))/(-1)/(dep[2]-dep[1]))**2)*(10**6))
d100200.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm200)-np.min(temm200))/(np.max(temm100)-np.min(temm100)))/(-1)/(dep[3]-dep[2]))**2)*(10**6))
frame3={'d20-50':d2050,'d50-100':d50100,'d100-200':d100200}
dataframe3=pd.DataFrame(frame3)
dataframe3
dataframe3.to_csv("C:\\Users\\86139\\Desktop/newNADORSdataframe2.csv")
下面是我想结合到一起写的代码,前面是一致的,后边计算的部分我改成了如下
for i in years:
for j in range(1,13):
temm20=[]
temm50=[]
temm100=[]
temm200=[]
if j in a :
for k in range(1,32):
temm20.append(np.mean(tem20[np.where((year==i)&(month==j)&(day==k))]))
temm50.append(np.mean(tem50[np.where((year==i)&(month==j)&(day==k))]))
temm100.append(np.mean(tem100[np.where((year==i)&(month==j)&(day==k))]))
temm200.append(np.mean(tem200[np.where((year==i)&(month==j)&(day==k))]))
d2050.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm50)-np.min(temm50))/(np.max(temm20)-np.min(temm20)))/(-1)/(dep[1]-dep[0]))**2)*(10**6))
d50100.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm100)-np.min(temm100))/(np.max(temm50)-np.min(temm50)))/(-1)/(dep[2]-dep[1]))**2)*(10**6))
d100200.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm200)-np.min(temm200))/(np.max(temm100)-np.min(temm100)))/(-1)/(dep[3]-dep[2]))**2)*(10**6))
elif j in b:
for k in range(1,31):
temm20.append(np.mean(tem20[np.where((year==i)&(month==j)&(day==k))]))
temm50.append(np.mean(tem50[np.where((year==i)&(month==j)&(day==k))]))
temm100.append(np.mean(tem100[np.where((year==i)&(month==j)&(day==k))]))
temm200.append(np.mean(tem200[np.where((year==i)&(month==j)&(day==k))]))
d2050.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm50)-np.min(temm50))/(np.max(temm20)-np.min(temm20)))/(-1)/(dep[1]-dep[0]))**2)*(10**6))
d50100.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm100)-np.min(temm100))/(np.max(temm50)-np.min(temm50)))/(-1)/(dep[2]-dep[1]))**2)*(10**6))
d100200.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm200)-np.min(temm200))/(np.max(temm100)-np.min(temm100)))/(-1)/(dep[3]-dep[2]))**2)*(10**6))
else:
for k in range(1,29):
temm20.append(np.mean(tem20[np.where((year==i)&(month==j)&(day==k))]))
temm50.append(np.mean(tem50[np.where((year==i)&(month==j)&(day==k))]))
temm100.append(np.mean(tem100[np.where((year==i)&(month==j)&(day==k))]))
temm200.append(np.mean(tem200[np.where((year==i)&(month==j)&(day==k))]))
d2050.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm50)-np.min(temm50))/(np.max(temm20)-np.min(temm20)))/(-1)/(dep[1]-dep[0]))**2)*(10**6))
d50100.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm100)-np.min(temm100))/(np.max(temm50)-np.min(temm50)))/(-1)/(dep[2]-dep[1]))**2)*(10**6))
d100200.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm200)-np.min(temm200))/(np.max(temm100)-np.min(temm100)))/(-1)/(dep[3]-dep[2]))**2)*(10**6))
for k in range(1,30):
temm20.append(np.mean(tem20[np.where((year==i)&(month==j)&(day==k))]))
temm50.append(np.mean(tem50[np.where((year==i)&(month==j)&(day==k))]))
temm100.append(np.mean(tem100[np.where((year==i)&(month==j)&(day==k))]))
temm200.append(np.mean(tem200[np.where((year==i)&(month==j)&(day==k))]))
d2050.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm50)-np.min(temm50))/(np.max(temm20)-np.min(temm20)))/(-1)/(dep[1]-dep[0]))**2)*(10**6))
d50100.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm100)-np.min(temm100))/(np.max(temm50)-np.min(temm50)))/(-1)/(dep[2]-dep[1]))**2)*(10**6))
d100200.append((2*np.pi/86400./365.)/2./((np.log((np.max(temm200)-np.min(temm200))/(np.max(temm100)-np.min(temm100)))/(-1)/(dep[3]-dep[2]))**2)*(10**6))
frame2={'d20-50':d2050,'d50-100':d50100,'d100-200':d100200}
dataframe2=pd.DataFrame(frame2)
dataframe2
dataframe2.to_csv("C:\\Users\\86139\\Desktop/123NADORSdataframe.csv")
倒是可以运行出来 但运行结果显示如下
正确结果应如
想请问问题究竟出在哪里呢?若能得到解答,感激不尽