数据分析从入门到“入坑“系列利用Python学习数据分析-Numpy中的数组转置和轴对称

Posted Vax_Loves_1314

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据分析从入门到“入坑“系列利用Python学习数据分析-Numpy中的数组转置和轴对称相关的知识,希望对你有一定的参考价值。

数组转置和轴对换

转置是重塑的一种特殊形式,它返回的是源数据的视图(不会进行任何复制操作)。数组不仅有transpose方法,还有一个特殊的T属性:

In [126]: arr = np.arange(15).reshape((3, 5))
​
In [127]: arr
Out[127]: 
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
​
In [128]: arr.T
Out[128]: 
array([[ 0,  5, 10],
       [ 1,  6, 11],
       [ 2,  7, 12],
       [ 3,  8, 13],
       [ 4,  9, 14]])

在进行矩阵计算时,经常需要用到该操作,比如利用np.dot计算矩阵内积:

In [129]: arr = np.random.randn(6, 3)
​
In [130]: arr
Out[130]: 
array([[-0.8608,  0.5601, -1.2659],
       [ 0.1198, -1.0635,  0.3329],
       [-2.3594, -0.1995, -1.542 ],
       [-0.9707, -1.307 ,  0.2863],
       [ 0.378 , -0.7539,  0.3313],
       [ 1.3497,  0.0699,  0.2467]])
​
In [131]: np.dot(arr.T, arr)
Out[131]:
array([[ 9.2291,  0.9394,  4.948 ],
       [ 0.9394,  3.7662, -1.3622],
       [ 4.948 , -1.3622,  4.3437]])

对于高维数组,transpose需要得到一个由轴编号组成的元组才能对这些轴进行转置(比较费脑子):

In [132]: arr = np.arange(16).reshape((2, 2, 4))
​
In [133]: arr
Out[133]: 
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7]],
       [[ 8,  9, 10, 11],
        [12, 13, 14, 15]]])
​
In [134]: arr.transpose((1, 0, 2))
Out[134]: 
array([[[ 0,  1,  2,  3],
        [ 8,  9, 10, 11]],
       [[ 4,  5,  6,  7],
        [12, 13, 14, 15]]])

这里,第一个轴被换成了第二个,第二个轴被换成了第一个,最后一个轴不变。

简单的转置可以使用.T,它其实就是进行轴对换而已。ndarray还有一个swapaxes方法,它需要接受一对轴编号:

In [135]: arr
Out[135]: 
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7]],
       [[ 8,  9, 10, 11],
        [12, 13, 14, 15]]])
​
In [136]: arr.swapaxes(1, 2)
Out[136]: 
array([[[ 0,  4],
        [ 1,  5],
        [ 2,  6],
        [ 3,  7]],
       [[ 8, 12],
        [ 9, 13],
        [10, 14],
        [11, 15]]])

swapaxes也是返回源数据的视图(不会进行任何复制操作)。

以上是关于数据分析从入门到“入坑“系列利用Python学习数据分析-Numpy中的数组转置和轴对称的主要内容,如果未能解决你的问题,请参考以下文章

数据分析从入门到“入坑“系列利用Python学习数据分析-Python语法基础

数据分析从入门到“入坑“系列利用Python学习数据分析-环境配置和软件安装

数据分析从入门到“入坑“系列利用Python学习数据分析-Python函数

数据分析从入门到“入坑“系列利用Python学习数据分析-Numpy数组运算

数据分析从入门到“入坑“系列利用Python学习数据分析-Python函数-2

数据分析从入门到“入坑“系列利用Python学习数据分析-Python数据结构-2