【问题标题】:Numpy Reshape to obtain monthly means from dataNumpy Reshape 从数据中获取月均值
【发布时间】:2017-12-21 00:13:13
【问题描述】:

我正在尝试从 1901 年至 2015 年期间观察到的降水数据集中获取月均值。我的 prec 变量的当前形状是(1380(time), 360(lon), 720(lat)),其中 1380 是 115 年期间的月数。我被告知要计算月均值,最有效的方法是对prec 变量执行np.reshape 命令,将数组拆分为月和年。但是我不确定最好的方法是什么。我还想知道 Python 中是否有办法选择一年中的特定月份,因为我将为一年中的每个月制作图表。

我一直在尝试使用下面的代码重塑 prec 变量。但是我不确定如何正确执行此操作:

#Set Source Folder
sys.path.append('../../..')
SrcFld = ("/export/silurian/array-01/obs/CRU/")

#Retrieve Data
data_path = ''

example = (str(SrcFld) + 'cru_ts4.00.1901.2015.pre.dat.nc') 
Data = Dataset(example)

#Create Prec Mean Array and reshape to get monthly means
Prec_mean = np.zeros((360,720))

#Retrieve Variables
Prec = Data.variables['pre'][:]
lats = Data.variables['lat'][:]
lons = Data.variables['lon'][:]

np.reshape(Prec, ())

#Get Annual/Monthly Average
Prec_mean =np.mean(Prec,axis=0)

如有任何关于此问题的指导,我们将不胜感激。

【问题讨论】:

  • 你想计算什么平均值?你有一个时间和两个空间坐标,我假设你也有一些变量(取决于这些坐标)?这是'pre' ?请更具体地说明您拥有的数组形状。
  • 最好告诉我们不要告诉我们reporoducible example。我们没有你的 CPU,所以我们不知道 Data 中有什么。
  • 请包含Prec 的最小示例,例如十或十五行 (Prec[15,...]),并附上每个轴的说明。

标签: python numpy mean reshape


【解决方案1】:

下面的 sn-p 将首先逐年对降水数组进行切分。然后我们可以使用该数组来获得月平均降水量。

>>> prec = np.random.rand(1380,360,720)
>>> ind = np.arange(12,1380,12)
>>> yearly_split = np.array(np.split(prec, ind, axis=0))

>>> yearly_split.shape
(115, 12, 360, 720)

>>> monthly_mean = yearly_split.mean(axis=0)
>>> monthly_mean.shape
(12, 360, 720)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-29
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多