Numpy下三维数组转置

高维矩阵转置,可能在matlab和python的mat文件交互上出现分歧,两方的顺序并不一样,需要注意,可以转置使用。

原博客:https://blog.csdn.net/u013796132/article/details/70207945

numpy中的ndarray很适合数组运算

Numpy下三维数组转置_第1张图片

transpose是用来转置的一个函数,很容易让人困惑,其实它是对矩阵索引顺序的一次调整。原先矩阵是一个三维矩阵,索引顺序是x,y,z,角标分别是0、1、2,经过上图(1,0,2)调整后就成了y,x,z。

理解了这些,那么swapaxes方法也就不难理解了

Numpy下三维数组转置_第2张图片

 

原博客:https://blog.csdn.net/u014041590/article/details/89159638

可以从下面三维立方体的角度思考一下。

Numpy下三维数组转置_第3张图片

Numpy下三维数组转置_第4张图片

原数组的索引顺序是x轴,y轴,z轴,即0轴,1轴,2轴。

那么当将(0,1,2)改为(1,0,2)时,即索引顺序变为y轴,x轴,z轴。以此类推。例子如下。

1、numpy.transpose(arr, axes)用于对换数组的维度。参数axes是整数列表对应维度。

(1)axes=[1,0,2]表示:(x,y,z)2*3*4 ——> (y,x,z)3*2*4

Numpy下三维数组转置_第5张图片

(2)axes=[2,1,0]表示:(x,y,z)2*3*4 ——> (z,y,x)4*3*2

(a的转置求法一)

Numpy下三维数组转置_第6张图片

(a的转置求法二)

Numpy下三维数组转置_第7张图片

2、numpy.swapaxes(arr, axis1, axis2)用于交换数组的两个轴。

(1)0轴和1轴交换(=np.swapaxes(a,1,0)):(x,y,z)2*3*4 ——> (y,x,z)3*2*4

Numpy下三维数组转置_第8张图片

(2)0轴和2轴交换(=np.swapaxes(a,2,0)):(x,y,z)2*3*4 ——> (z,y,x)4*3*2

(a的转置求法三)

Numpy下三维数组转置_第9张图片

3、numpy.rollaxis(arr, axis, start)向后滚动特定的轴到一个特定位置(默认滚动至0轴)。

(1)1轴滚动到0轴 :(x,y,z) 2*3*4——> (y,x,z)3*2*4

Numpy下三维数组转置_第10张图片

(2)2轴滚动到0轴 :(x,y,z)2*3*4 ——> (z,x,y)4*2*3

Numpy下三维数组转置_第11张图片

(3)为什么0轴滚动到1轴、1轴滚动到2轴,等同于未滚动?为什么0轴滚动到2轴结果如此?此处懂了的小伙伴麻烦给我留言解释一下,谢谢。

Numpy下三维数组转置_第12张图片

Numpy下三维数组转置_第13张图片

Numpy下三维数组转置_第14张图片

你可能感兴趣的:(python,matlab)