我正在使用Numpy 1.12.1。
根据 vstack 的文档
继续支持此函数以实现向后兼容性,但您应该首选 np.concatenate 或 np.stack。np.stack 函数是在 NumPy 1.10 中添加的。
但是没有numpy.ma.stack
功能。尝试堆叠屏蔽数组时,np.stack
函数无法正常工作。
我应该继续使用numpy.ma.vstack
还是有另一种方法可以在不依赖看似已弃用的功能的情况下实现相同的功能?
我认为弃用声明夸大了stack
的有用性。 没有人会停止使用vstack
或hstack
.但这些都是concatenate
的前端. 我鼓励大家在使用"连接"之前查看这些函数的源代码,以了解它们如何操作维度。
我认为堆栈更像是np.array
的概括。 当给定 2d 数组列表时,np.array
将它们连接在前面的新轴上,从而生成一个 3d 数组。np.stack
允许您将它们连接到另外 2 个新轴上。
当给定一维数组列表时,np.stack
可以替换vstack
。 但如果给定 1 和 2D 的混合,则不会。
Masked arrays
有点死水,不会很快获得新功能。 使用它提供的功能,不用担心stack
文档。
ma.vstack
这样做(其中'func= np.vstack):
_d = func(tuple([np.asarray(a) for a in x]), *args, **params)
_m = func(tuple([getmaskarray(a) for a in x]), *args, **params)
return masked_array(_d, mask=_m)
它对.data
和mask
部分执行vstack
,然后创建一个新的屏蔽数组。 看起来它可以很容易地扩展到与np.stack
一起工作.