关于这个主题的现有问题已经很少,但不幸的是我没有找到可以解决我的问题的东西。
我有一个点 Lat,Long 坐标,即 Lat= 10 和 Long = 10。我想围绕这个点创建一个 0.5 度边界框的形状文件,所以边界框应该如下:
有谁知道如何在 Python 中做到这一点?
我有以下数据框:
Date Value1 Value2
01-01-01 01 01
02-01-01 02 00
03-01-01 03 01
04-01-01 04 101
Run Code Online (Sandbox Code Playgroud)
在此数据框中,我只想选择具有 Value2==0 and Value2>=100
为此,我使用以下命令:
data.loc[(data['Value2'] == 0) & (data['Value2'] >= 100)]
Run Code Online (Sandbox Code Playgroud)
这给我一个空的 DataFrame。我真的不明白为什么,因为当我单独使用时:
data.loc[(data['Value2'] == 0)]
Run Code Online (Sandbox Code Playgroud)
或者:
data.loc[(data['Value2'] >= 100)
Run Code Online (Sandbox Code Playgroud)
它返回更正后的值。有谁知道如何实现这两个条件选择?
我有一些 NetCDF 文件,我需要从中绘制一些变量。我使用以下小代码来绘制我需要的数据:
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
%matplotlib inline
import xarray as xr
os.chdir
fname = "/home/data.nc"
ds = xr.open_dataset(fname)
ds['Evap_obs'].plot()
plt.show()
Run Code Online (Sandbox Code Playgroud)
其工作正常并产生下图:
我现在的问题是这个情节不太可读。因此我希望事先平滑数据。为此我有这个小功能:
def mov_avg(x,window,min_count=None,axis=-1):
import bottleneck as bn
yy=np.ma.filled(np.ma.fix_invalid(x),np.nan)
yyF=np.ma.masked_all(yy.shape)
xtmp=bn.move_mean(yy,window,min_count=min_count,axis=axis)
wd1=(window-1)/2
ndim = len(yy.shape)
#print xtmp.shape,ndim,axis,window,wd1
if ndim ==1 :
#print wd1,-wd1,wd-1
yyF[wd1:-wd1]=np.ma.fix_invalid(xtmp[window-1:])
elif ndim == 2:
if axis==-1 or axis==1:
yyF[:,wd1:-wd1]=np.ma.fix_invalid(xtmp[:,window-1:])
elif axis==0:
yyF[wd1:-wd1,:]=np.ma.fix_invalid(xtmp[window-1:,:])
return yyF
Run Code Online (Sandbox Code Playgroud)
然后,当我希望对我的数据运行此函数以使其平滑时,如下所示(使用 7 个时间步长的窗口进行平滑):
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
%matplotlib inline
import xarray as …Run Code Online (Sandbox Code Playgroud)