数组转置和轴对换
转置(transpose)是重塑的一种特殊形式,它返回的是源数据的视 图(不会进行任何复制操作)。数组不仅有transpose方法,还有一个特 殊的T属性
In [1]: arr = np.arange(15).reshape((3, 5))
In [2]: arr
Out[2]: array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14]])
In [3]: arr.T
Out[3]: array([[ 0, 5, 10], [ 1, 6, 11], [ 2, 7, 12], [ 3, 8, 13], [ 4, 9, 14]])
利用np.dot计算矩阵内积
In [4]: arr = np.random.randn(6, 3)
In [5]: np.dot(arr.T, arr)
Out[5]: array([[ 2.584 , 1.8753, 0.8888], [ 1.8753, 6.6636, 0.3884], [ 0.8888, 0.3884, 3.9781]])
对于高维数组,transpose需要得到一个由轴编号组成的元组才能对这些轴进行转置
简单的转置可以使用.T,它其实就是进行轴对换而已。ndarray还 有一个swapaxes方法,它需要接受一对轴编号
In [6]: arr
Out[6]: array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7]], [[ 8, 9, 10, 11], [12, 13, 14, 15]]])
In [7]: arr.swapaxes(1, 2)
Out[7]: array([[[ 0, 4], [ 1, 5], [ 2, 6], [ 3, 7]], [[ 8, 12], [ 9, 13], [10, 14], [11, 15]]])
swapaxes也是返回源数据的视图(不会进行任何复制操作)