Python 3.x 为什么在python中不传递属性?
我编写了一个脚本,从IPCC的netCDF数据集中提取空间和时间子集。下面的脚本工作得很好:Python 3.x 为什么在python中不传递属性?,python-3.x,numpy,datetime,netcdf,netcdf4,Python 3.x,Numpy,Datetime,Netcdf,Netcdf4,我编写了一个脚本,从IPCC的netCDF数据集中提取空间和时间子集。下面的脚本工作得很好: import numpy import netCDF4 import datetime drs_name = ['C:\\pr_Amon_MPI-ESM-MR_rcp45_r2i1p1_200601-210012.nc'] cdf_dataset = netCDF4.Dataset(drs_name[0]) cdf_time = cdf_dataset.variables['time']
import numpy
import netCDF4
import datetime
drs_name = ['C:\\pr_Amon_MPI-ESM-MR_rcp45_r2i1p1_200601-210012.nc']
cdf_dataset = netCDF4.Dataset(drs_name[0])
cdf_time = cdf_dataset.variables['time']
date_start = 2006
time_start = datetime.datetime(date_start,1,1,0,0,0)
sbset_time_loindex = netCDF4.date2index(time_start,cdf_time,
calendar = cdf_calendar,
select='nearest')
来自cdf_数据集的变量“time”具有属性,当我如上所述写入“cdf_time”时,它们会被带到其中。以下是“cdf_时间”的简单打印输出:
属性不随附。以下是此“cdf_时间”版本的打印输出:
基本上是时间值,但没有属性。有人能给我解释一下这个切片“[:]”的效果吗?为什么不进行属性处理
顺便说一句,我对这方面还很陌生,所以不要期望有一段整洁的代码,但我会尽力做我的家庭作业。提前谢谢。好吧,你自己已经回答了这个问题…
cdf\u数据集。变量['time']
返回一个带有属性的NetCDF4变量,添加[:]
返回类型是一个Numpy数组,它没有NetCDF变量属性……我通常是如何处理的:从bla=cdf_dataset.variables['time']
开始,它允许您访问属性,然后写入bla[:]
如果你想访问数据。谢谢巴特。这正是我想要的答案。我确实四处寻找了一个合适的解释,但没有找到。我相信这应该在netCDF4的文档中找到,但在那里也找不到。好吧,你自己已经回答了这个问题…cdf_数据集。变量['time']
返回一个带有属性的NetCDF4变量,添加[:]
,返回类型是一个Numpy数组,它没有NetCDF变量属性……我通常如何处理这个问题:从bla=cdf_数据集开始。变量['time']
它允许您访问属性,然后写入bla[:]
如果您想访问数据。谢谢Bart。这正是我想要的答案。我确实四处寻找了适当的解释,但没有找到。我相信这应该在netCDF4的文档中找到,在那里也找不到。
cdf_time is : <class 'netCDF4._netCDF4.Variable'>
float64 time(time)
bounds: time_bnds
units: days since 1850-1-1 00:00:00
calendar: proleptic_gregorian
axis: T
long_name: time
standard_name: time
unlimited dimensions: time
current shape = (1140,)
filling off
cdf_time = cdf_dataset.variables['time'][:]
cdf_time is: [ 56993.5 57023. 57052.5 ..., 91599.5 91630. 91660.5]