11,数组转置和轴对换
作者:互联网
# 11,数组转置和轴对换
# 转置 是 重塑的一种特殊形式,它返回的是源数据的视图(不会进行任何复制操作)
# 数组不仅有transpose的方法,它还有一个特殊的T属性
arr = np.arange(15).reshape((3, 5))
print("arr:\n", arr)
print('\narr.T:\n', arr.T)
# 进行矩阵计算时,经常需要用到该操作,比如利用np.dot计算矩阵内积 x.T * x (点积)
arr = np.random.randn(6, 3)
print("\n点积(内积):\n",np.dot(arr, arr.T))
arr:
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
arr.T:
[[ 0 5 10]
[ 1 6 11]
[ 2 7 12]
[ 3 8 13]
[ 4 9 14]]
点积(内积):
[[ 1.9174895 1.49777998 -1.87074116 -0.03645364 1.0328319 1.72957686]
[ 1.49777998 2.53674719 -1.35736316 -1.52906335 2.72241919 2.07011927]
[-1.87074116 -1.35736316 4.04714969 3.92835853 -0.3544409 -2.99845626]
[-0.03645364 -1.52906335 3.92835853 8.89932997 -1.20421928 -3.29390032]
[ 1.0328319 2.72241919 -0.3544409 -1.20421928 3.35758917 1.62641291]
[ 1.72957686 2.07011927 -2.99845626 -3.29390032 1.62641291 2.78082933]]
# 对于高维数组,transpose需要得到一个由轴编号组成的元祖才能对这些轴进行转置
# transpose是什么鬼呀。完全理解不了!!!
arr = np.arange(16).reshape((2, 2, 4))
print("arr:\n", arr)
print('\narr.transpose((1, 0, 2)):\n', arr.transpose((1, 0, 2)))
arr:
[[[ 0 1 2 3]
[ 4 5 6 7]]
[[ 8 9 10 11]
[12 13 14 15]]]
arr.transpose((1, 0, 2)):
[[[ 0 1 2 3]
[ 8 9 10 11]]
[[ 4 5 6 7]
[12 13 14 15]]]
# 简单的转置可以使用.T,它其实就是进行轴对称而已。ndarray还有一个swapaxes方法,它需要一对轴编号:
print("arr:\n", arr)
print('\narr.swapaxes(1, 2):\n', arr.swapaxes(1, 2))
arr:
[[[ 0 1 2 3]
[ 4 5 6 7]]
[[ 8 9 10 11]
[12 13 14 15]]]
arr.swapaxes(1, 2):
[[[ 0 4]
[ 1 5]
[ 2 6]
[ 3 7]]
[[ 8 12]
[ 9 13]
[10 14]
[11 15]]]
标签:11,10,arr,转置,对换,transpose,13,print 来源: https://blog.csdn.net/weixin_42752585/article/details/95967617