今天在复习PCA的过程中,发现自己对numpy多维数组的“轴”理解的不是很好,借此机会来总结一下。
网上有很多博客都写的是二维数组,axis=0表示第一维度,即行。axis=1表示第二维度,列。但是设计到多维就有点不知所错。
举个网上存在的例子帮助理解:
>> data2 array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]], [[12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23]]]) >> data2.shape (2L, 3L, 4L)
下面是不同axis的情况:
data2.sum(axis=0) Out[49]: array([[12, 14, 16, 18], [20, 22, 24, 26], [28, 30, 32, 34]]) data2.sum(axis=1) Out[51]: array([[12, 15, 18, 21], [48, 51, 54, 57]]) data2.sum(axis=2) Out[52]: array([[ 6, 22, 38], [54, 70, 86]])
这里红色是axis=0的相加情况,黄色是axis=1,蓝色axis=2
所以如果一个多维数组的 shape 是 (a1, a2, a3, a4), 那么延轴0计算最后的数组shape 是 (a2, a3, a4), 延轴1计算最后的数组shape是 (a1, a3, a4)。
axis =0还是代表shape0,只不过axis=0的一些计算如,np.sum(axis=0)是沿着这个轴计算其他轴的,也就是除了这个轴以外其他轴都会计算
参考链接:https://blog.csdn.net/zxyhhjs2017/article/details/81428220
原文:https://www.cnblogs.com/nacl96/p/11254916.html