我需要用 NetCDF 文件做一些计算。所以我有两个具有以下尺寸和大小的变量:
A [time | 1] x [lev | 12] x [lat | 84] x [lon | 228]
B [lev | 12]
我需要的是生成一个新数组 ,C
它的形状是(1,12,84,228)
内容B
传播到A
.
通常,这很容易在 NCL 中使用 conform 函数完成。我不确定在 Python 中这个等价物是什么。
谢谢你。
我需要用 NetCDF 文件做一些计算。所以我有两个具有以下尺寸和大小的变量:
A [time | 1] x [lev | 12] x [lat | 84] x [lon | 228]
B [lev | 12]
我需要的是生成一个新数组 ,C
它的形状是(1,12,84,228)
内容B
传播到A
.
通常,这很容易在 NCL 中使用 conform 函数完成。我不确定在 Python 中这个等价物是什么。
谢谢你。
numpy.broadcast_to函数可以做这样的事情,尽管在这种情况下它确实需要添加B
几个额外的尾随大小 1 维度以满足numpy 广播规则
>>> 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])