本文主要是介绍关于numy中np.expand_dims方法的理解?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转自知乎
锴锴
烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫
150 人赞同了该回答
这个东西的主要作用,就是增加一个维度。
现在我们假设有一个数组A,数组A是一个两行三列的矩阵。大小我们记成(2,3)。
先明白一个常识,计算机中计数,一般是从0开始的。
所以(2,3)这个两行三列的矩阵,
它的第“0”维,就是这个“2”行;第“1”维,就是这个“3”列。
这个函数的作用,就是在第“axis”维,加一个维度出来,原先的“维”,推到右边去。
比如我们设置axis为0,那A矩阵的大小就变成了(1,2,3),就从2*3的二维矩阵变成了一个1*2 *3的三维矩阵。如果设置axis为1,矩阵大小就变成了(2,1,3),变成了一个2*1*3的三维矩阵。axis为2的时候,就变成(2,3,1)啦。
那么,说了这么多,矩阵的形式变了,那么矩阵里面的数字怎么变的呢?
举个例子:
假设现在矩阵是2*3的矩阵,六个数字
1 2 3
4 5 6
初中和高中所学的平面直角坐标系和空间直角坐标系还记得吗?
我们设置axis为0,矩阵从2*3的二维矩阵变成了1*2*3的三维矩阵。
我们假设原来是一个二维平面,横坐标为x,纵坐标为y, 2*3的矩阵在这个XOY平面上。此时就是一个二维矩阵,(根本就没有z轴)
而变换以后,现在变成了三维矩阵,变成了一个空间直角坐标系,,有x,y,z三个轴。
原先的2*3的矩阵从XOY平面移动到了YOZ平面
(我们把原先的矩阵当成一个平摊在桌面上的纸片,变换以后,相当于给它立起来了),然后原先的X轴的“厚度”为1,此时虽然形式还是原来的数字,但是多了一个轴。
那如果设置axis为1呢?
就是从XOY面的矩阵,给它立起来到XOZ平面,在Y轴的厚度为1。
设置axis为2,就是从XOY面的矩阵,还是放在XOY面上。但是这时候多了一个z轴,(相当于这个操作之后可以在桌面的纸片上面,叠加新的纸片了)
——————————————————————————————————
这时候我们再看矩阵
1 2 3
4 5 6
原先A[0][0]对应1,A[0][1]对应2,A[0][2]对应3,A[1][0]对应4……
如果设置axis为0,这时候矩阵从XOY平面移动到了YOZ平面,X轴只有一个值
那么,变换后的矩阵A'的第一个维度,只有一个值,就只能是0
A'[0][0][0]是1,A[0][0][1]是2,A[0][0][2]是3
A'[0][1][0]是4,A[0][1][1]是5,A[0][1][2]是6
A'[0][0]不指定第三维,那么就是[1,2,3]
A'[0][1]不指定第三维,就是[4,5,6]
那A[1][0][0]……呢?不好意思,没有,因为第一维只能取一个数,就是0。
axis为1,2都同理。
可能说的有点啰嗦了。
如果是三维矩阵变成四维矩阵,那就不好直接想象样子了。但是道理是一样的。
https://www.zhihu.com/question/265545749?sort=created
这篇关于关于numy中np.expand_dims方法的理解?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!