numpy.transpose method for transposing three-dimensional arrays

不言
Release: 2018-04-17 15:33:00
Original
3971 people have browsed it

The following is an article about numpy.transpose's transposition method for three-dimensional arrays. It has a good reference value and I hope it will be helpful to everyone. Come and take a look together

As shown below:

import numpy as np
Copy after login

Three-dimensional array

arr1 = np.arange(16).reshape((2, 2, 4)) 
#[[[ 0 1 2 3] 
# [ 4 5 6 7]] 
 
# [[ 8 9 10 11] 
# [12 13 14 15]]] 
 
arr2=arr1.transpose((1,0,2)) 
#[[[ 0 1 2 3] 
# [ 8 9 10 11]] 
# 
# [[ 4 5 6 7] 
# [12 13 14 15]]]
Copy after login

The positive sequence is (0, 1, 2), and the array is

#[[[ 0 1 2 3] 
# [ 4 5 6 7]] 
 
# [[ 8 9 10 11] 
# [12 13 14 15]]]
Copy after login

Why after entering tanspose (1, 0, 2), the array becomes

#[[[ 0 1 2 3] 
# [ 8 9 10 11]] 
# 
# [[ 4 5 6 7] 
# [12 13 14 15]]]
Copy after login

After careful observation, you can see that the difference between the transposed array and the pre-transposed array is that the second line of the first page and the first line of the second page are swapped, but why?

When I use arr1[0,1,0], the index value is 4

##When I use arr2[1,0,0], the index The value is 4

There seems to be some connection between the changes in the index parameter table and the difference between positive order and transposed order

For the arr1 array, the index parameter table [0, 0, x ] can represent the first row of the first page. After the current two parameters are swapped, the index parameter table of the same element has not changed.

So the first row of the first page of arr2 and the first page of arr1 The first row is the same

For the arr1 array, the index parameter table [0, 1, x] can represent the second row of the first page. After the current two parameters are swapped, the index value of the same element is such as [0 , 1, 0] becomes [1, 0, 0],

This explains the difference in the index parameter table of index value 4

This is probably the idea, so transpose(1,0,2), the second row of the first page of the array and the first row of the second page are swapped

The following four transposition methods are also roughly this The idea, if you look carefully, it should not be difficult to understand

arr3=arr1.transpose((0,2,1)) 
 
# [[[ 0 4] 
# [ 1 5] 
# [ 2 6] 
# [ 3 7]] 
# 
# [[ 8 12] 
# [ 9 13] 
# [10 14] 
# [11 15]]] 
 
arr4=arr1.transpose((2,0,1)) 
#[[[ 0 4] 
# [ 8 12]] 
# 
# [[ 1 5] 
# [ 9 13]] 
# 
# [[ 2 6] 
# [10 14]] 
# 
# [[ 3 7] 
# [11 15]]]
Copy after login

What should be noted here is that the arr4 array becomes 4 pages. This is because of the page number and line number After the swap, the

page number changed from the number 2 to 4

and the line number changed from the number 4 to 2

arr5=arr1.transpose((2,1,0)) 
#[[[ 0 8] 
# [ 4 12]] 
# 
# [[ 1 9] 
# [ 5 13]] 
# 
# [[ 2 10] 
# [ 6 14]] 
# 
# [[ 3 11] 
# [ 7 15]]] 
 
arr6=arr1.transpose((1,2,0)) 
#[[[ 0 8] 
# [ 1 9] 
# [ 2 10] 
# [ 3 11]] 
# 
# [[ 4 12] 
# [ 5 13] 
# [ 6 14] 
# [ 7 15]]]
Copy after login

In addition, transpose (2, 0, 1) can be seen as transposing (0, 2, 1) first and then transposing (1, 0, 2)

Transpose (2, 1, 0) can be seen as transposing (1, 0, 2) first, then transposing (0, 2, 1), and finally transposing (1, 0 , 2)

Transpose (1, 2, 0) can be seen as, first transpose (1, 0, 2), then transpose (0, 2, 1)

code It can be written as

arr4=arr1.transpose(0,2,1).transpose(1,0,2)
Copy after login

#[[[ 0 4]
# [ 8 12]]
#
# [[ 1 5]
# [ 9 13]]
#
# [[ 2 6]
# [10 14]]
#
# [[ 3 7]
# [11 15]]]
Copy after login

and the result will be the same!

Related recommendations:


The difference between array and asarray in numpy

How to process boolean arrays in numpy

The above is the detailed content of numpy.transpose method for transposing three-dimensional arrays. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template