我有这个玩具示例,我使用 pint 和 numpy -
import numpy as np
from pint import UnitRegistry
ureg = UnitRegistry()
Q_ = ureg.Quantity
args = []
for k in range(0,17):
uwnd = Q_(np.ones((1,73,144)),'meter / second')
args.append(uwnd)
uwndTot = np.vstack(args)
print(uwndTot.shape)
for element in args:
print(type(element))
uwndTot 的形状是
(17,73,144)
如上图 args 中元素的类型为
<class 'pint.quantity.build_quantity_class.<locals>.Quantity'>
但是,如果我以以下方式打印出 uwndTot 的类型,我会得到
for element in uwndTot:
print(type(element))
我明白了
<class 'numpy.ndarray'>
所以我无法从这个过程中提取 uwnd 的单位。这是正确的行为吗?为什么我发出呼叫时类型会改变
np.vstack(args)
或者
np.concatenate(args,axis = 0)
我希望能够使用 vstack 或连接。还有其他方法吗?
更新 我有一堆 netCDF 文件,当我读入时,它们的形状(73,144)。我需要连接它们中的“n”个,这会给我一个形状的 numpy 数组(17,73,144)。那些 netCDF 文件的单位是米/秒或其他单位。我的计算中需要这些单位。