我有这个玩具示例,我正在使用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',这将给我一个笨重的形状 (17,73,144)。这些netCDF文件的单位为米/秒或其他单位。我的计算中需要这些单位。
答案 0 :(得分:1)
这是我们在MetPy中使用的方法,确保所有源数组都具有兼容的维度:
<img src="demo1.jpg" alt="Text" />