numpy中的stack,vstack与hstack新解
查了一下,发现网上好多人的解释都不对,很多人打算用数组“打包”等过程来解释stack函数操作过程,要么举的例子太简单没有代表性,要么举的例子太复杂,看得人头疼。
其实,没有必要去了解这个函数是怎么操作数组的,按照官方的文档来看,对于这个函数,大家只需要了解两点即可,不必弄得太清楚明白:
- 这个函数是用来堆叠数组的;
- 这个函数所返回的数组的形状
第一点不必多言,关于第二点,官方文档给出的答案是:
返回的数组比原来的数组多一维。
但关键的问题是,多的那一维是加到了第几维?假设有S个MN的数组进行堆叠,那堆叠之后的数组到底是是SMN,MSN还是MNS呢?其实呢,这就是参数axis的作用。axis=0,那堆叠后的数组形状是SMN,如果axis=1,堆叠后的形状将是MS*N。依此类推。
关于参数axis的解释,官方文档其实有点难懂,但是它说的的确很准确,它可以用如下例子解释:
比如有10个形状为(4,3)的矩阵
arrays = [np.random.randn(3, 4) for _ in range(