高维数组泛指二维以上的数组,抽象,不可描述.
在使用numpy.transpose的时候用到,总结一下他的转置的规律.
arr = np.arange(24).reshape((2, 3, 4))
print(arr)
print(arr.transpose((1, 0, 2)))
print(arr.transpose((1, 2, 0)))
print('-' * 40)
print(arr.transpose((2, 0, 1)))
print('-' *40)
print(arr.transpose((2, 1, 0)))
结果如下:
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
[[[ 0 1 2 3]
[12 13 14 15]]
[[ 4 5 6 7]
[16 17 18 19]]
[[ 8 9 10 11]
[20 21 22 23]]]
[[[ 0 12]
[ 1 13]
[ 2 14]
[ 3 15]]
[[ 4 16]
[ 5 17]
[ 6 18]
[ 7 19]]
[[ 8 20]
[ 9 21]
[10 22]
[11 23]]]
[[[ 0 4 8]
[12 16 20]]
[[ 1 5 9]
[13 17 21]]
[[ 2 6 10]
[14 18 22]]
[[ 3 7 11]
[15 19 23]]]
[[[ 0 12]
[ 4 16]
[ 8 20]]
[[ 1 13]
[ 5 17]
[ 9 21]]
[[ 2 14]
[ 6 18]
[10 22]]
[[ 3 15]
[ 7 19]
[11 23]]]
理解(上面取成(2,3,4),为了下面方便思考):
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
如(2,1,0)
首先参照步骤一,确定转置后的数组形式.
[[[1 1]
[1 1]
[1 1]]
[[1 1]
[1 1]
[1 1]]
[[1 1]
[1 1]
[1 1]]
[[1 1]
[1 1]
[1 1]]]
然后确定第一组数据有两个(原0轴的长度为2).
两个数据的组成:
显而易见,最公平的方法就是从原数组中抽取两个对称的数组,也即第一个大组的第一个和第二大组的第一个.
[[[0 12]
[1 1]
[1 1]]
[[1 1]
[1 1]
[1 1]]
[[1 1]
[1 1]
[1 1]]
[[1 1]
[1 1]
[1 1]]]
简单来说:
该位置的数据为:从原轴上抽取对应数量的数据.
–>
可以这么看:
将高维数组降维,例如这里将原数组看做一个大数组,只有两个元素,这两个元素可以是数字(也就是数组),或者数组(也就是矩阵),或者多维数组(就是高维数组).这里是一个二维数组.
–<
也可以用三维图画一下,就能看到效果了,印象更加深刻.