给定变量的数组符合形状

问题描述 投票:0回答:1

我需要对NetCDF文件进行一些计算。因此,我有两个具有以下尺寸和大小的变量:

A [time | 1] x [lev | 12] x [lat | 84] x [lon | 228]
B [lev | 12]

[我需要生成一个新数组C,其形状为(1,12,84,228),其中B的内容传播到A的所有维度。

通常,在NCL中使用合格功能很容易做到这一点。我不确定Python中的等效功能。

谢谢。

python-3.x numpy netcdf netcdf4 ncl
1个回答
2
投票

numpy.broadcast_to函数可以执行类似的操作,尽管在这种情况下,它确实需要B加上两个额外的尾随大小1尺寸才能满足numpy broadcasting rules

>>> import numpy
>>> B = numpy.arange(12).reshape(12, 1, 1)
>>> B
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
>>> B = B.reshape(12, 1, 1)
>>> B.shape
(12, 1, 1)
>>> C = numpy.broadcast_to(b, (1, 12, 84, 228))
>>> C.shape
(1, 12, 84, 228)
>>> C[0, :, 0, 0]
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
>>> C[-1, :, -1, -1]
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])

© www.soinside.com 2019 - 2024. All rights reserved.