5、数组(矩阵)转置和轴对换:
本节内容紧接上一篇内容,同属于数组操作的章节。
5、数组(矩阵)转置和轴对换:1、numpy中的数组其实就是线性代数中的矩阵。矩阵是可以进行转置的。ndarray有一个T属性,可以返回这个数组的转置的结果。示例代码如下:
#ndarray有一个T属性,可以返回这个数组的转置的结果。 a1 = np.arange(0,24).reshape((4,6)) print(a1) # [[ 0 1 2 3 4 5] # [ 6 7 8 9 10 11] # [12 13 14 15 16 17] # [18 19 20 21 22 23]] #4行6列 a2 = a1.T print(a2) # [[ 0 6 12 18] # [ 1 7 13 19] # [ 2 8 14 20] # [ 3 9 15 21] # [ 4 10 16 22] # [ 5 11 17 23]] #6行4列
2、另外还有一个方法叫做transpose,这个方法返回的是一个View,也即修改返回值,会影响到原来数组。示例代码如下:
#transpose方法,这个方法返回的是一个View,也即修改返回值,会影响到原来数组。 a1 = np.arange(0,24).reshape((4,6)) print(a1) # [[ 0 1 2 3 4 5] # [ 6 7 8 9 10 11] # [12 13 14 15 16 17] # [18 19 20 21 22 23]] print(a1.transpose()) # [[ 0 6 12 18] # [ 1 7 13 19] # [ 2 8 14 20] # [ 3 9 15 21] # [ 4 10 16 22] # [ 5 11 17 23]] a2 = a1.transpose() print(a2) # [[ 0 6 12 18] # [ 1 7 13 19] # [ 2 8 14 20] # [ 3 9 15 21] # [ 4 10 16 22] # [ 5 11 17 23]]
3、为什么要进行矩阵转置呢,有时候在做一些计算的时候需要用到。比如做矩阵的内积的时候。就必须将矩阵进行转置后再乘以之前的矩阵:
#做矩阵的内积的时候。就必须将矩阵进行转置后再乘以之前的矩阵 a1 = np.arange(0,24).reshape((4,6)) a2 = a1.T print(a1.dot(a2))#.dot()方法进行内积运算,返回4行4列矩阵 # [[ 55 145 235 325] # [ 145 451 757 1063] # [ 235 757 1279 1801] # [ 325 1063 1801 2539]]
注意:要记住矩阵进行内积运算,可以通过矩阵乘以原矩阵的转置实现。



