我正在使用Numpy 1.12.1。
根据vstack
的文件此功能继续支持向后兼容性,但您应该更喜欢np.concatenate或np.stack。 np.stack函数在NumPy 1.10中添加。
但是没有numpy.ma.stack
功能。尝试堆叠屏蔽数组时,np.stack
函数无法正常工作。
我应该继续使用numpy.ma.vstack
还是有另一种方法来实现相同的功能而不依赖于看似已弃用的功能?
答案 0 :(得分:1)
我认为弃用声明夸大了stack
的用处。没有人会停止使用vstack
或hstack
。但这些都是concatenate
的前端。我鼓励大家查看这些函数的源代码,看看他们在使用`concatenate之前如何操作维度。
我认为堆栈更像是np.array
的概括。当给出2d数组的列表时,np.array
将它们连接在前面的新轴上,产生一个3d数组。 np.stack
允许您将它们连接到另外两个新轴上。
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)
它在vstack
和.data
部分上执行了mask
,然后创建了一个新的屏蔽数组。看起来可以轻松扩展以使用np.stack
。