赞
踩
问题来源:
有一天一个朋友问我这个问题,我也是似懂非懂,就上网查找相关资料,但是看着大家的解答还是有点懵,就去请教了另一位朋友,算是解决了一些心中的疑惑,记录一下。
x1 = np.arange(9).reshape((3,3))
x2 = np.arange(10,19,1).reshape((3,3))
y2 = np.stack((x1,x2),axis=1)
举例说明:
用jupyter
首先创建4个3*3的二维数组:
从坐标的角度去理解这个问题。
先把原始数组每个元素坐标写出来:
array([[0, 1, 2], (0,0)(0,1)(0,2)
[3, 4, 5], (1,0)(1,1)(1,2)
[6, 7, 8]]) (2,0)(2,1)(2,2)
array([[10, 11, 12], (0,0)(0,1)(0,2)
[13, 14, 15], (1,0)(1,1)(1,2)
[16, 17, 18]]) (2,0)(2,1)(2,2)
array([[0, 1, 2], (*0*,0,0)(*0*,0,1)(*0*,0,2)
[3, 4, 5], (*0*,1,0)(*0*,1,1)(*0*,1,2)
[6, 7, 8]]) (*0*,2,0)(*0*,2,1)(*0*,2,2)
array([[10, 11, 12], (*1*,0,0)(*1*,0,1)(*1*,0,2)
[13, 14, 15], (*1*,1,0)(*1*,1,1)(*1*,1,2)
[16, 17, 18]]) (*1*,2,0)(*1*,2,1)(*1*,2,2)
array([[0, 1, 2], (0,*0*,0)(0,*0*,1)(0,*0*,2)
[3, 4, 5], (1,*0*,0)(1,*0*,1)(1,*0*,2)
[6, 7, 8]]) (2,*1*,0)(2,*1*,1)(2,*1*,2)
array([[10, 11, 12], (0,*1*,0)(0,*1*,1)(0,*1*,2)
[13, 14, 15], (1,*2*,0)(1,*2*,1)(1,*2*,2)
[16, 17, 18]]) (2,*2*,0)(2,*2*,1)(2,*2*,2)
将变换后的元素按坐标填入相对应的位置就是变换后的数组形式,可以对照一下结果和变换后的坐标是不是一样的。
array([[0, 1, 2], (0,0,*0*)(0,1,*0*)(0,2,*0*)
[3, 4, 5], (1,0,*0*)(1,1,*0*)(1,2,*0*)
[6, 7, 8]]) (2,0,*1*)(2,1,*1*)(2,2,*1*)
array([[10, 11, 12], (0,0,*1*)(0,1,*1*)(0,2,*1*)
[13, 14, 15], (1,0,*2*)(1,1,*2*)(1,2,*2*)
[16, 17, 18]]) (2,0,*2*)(2,1,*2*)(2,2,*2*)
x1、x2和x3,axis = 0:
x1、x2和x3,axis = 1:
x1、x2和x3,axis = 2:
x1、x2、x3和x4,axis = 0:
x1、x2、x3和x4,axis = 1:
x1、x2、x3和x4,axis = 2:
后面两个可以自己验证一下,就不一一写出来了。如果有不对的地方还请多多批评指正。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。