對numpy中的transpose和swapaxes函數詳解
transpose()
這個函數如果括號內不帶參數,就相當于轉置,和.T效果一樣,而今天主要來講解其帶參數。
我們看如下一個numpy的數組:
`arr=np.arange(16).reshape((2,2,4)) arr= array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7]], [[ 8, 9, 10, 11], [12, 13, 14, 15]]]) `
那么有:
arr.transpose(2,1,0) array([[[ 0, 8], [ 4, 12]], [[ 1, 9], [ 5, 13]], [[ 2, 10], [ 6, 14]], [[ 3, 11], [ 7, 15]]])
為什么會是這樣的結果呢,這是因為arr這個數組有三個維度,三個維度的編號對應為(0,1,2),比如這樣,我們需要拿到7這個數字,怎么辦,肯定需要些三個維度的值,7的第一個維度為0,第二個維度為1,第三個3,所以arr[0,1,3]則拿到了7
arr[0,1,3] #結果就是7
這下應該懂了些吧,好,再回到transpose()這個函數,它里面就是維度的排序,比如我們后面寫的transpose(2,1,0),就是把之前第三個維度轉為第一個維度,之前的第二個維度不變,之前的第一個維度變?yōu)榈谌齻€維度,好那么我們繼續(xù)拿7這個值來說,之前的索引為[0,1,3],按照我們的轉換方法,把之前的第三維度變?yōu)榈谝痪S度,之前的第一維度變?yōu)榈谌S度,那么現在7的索引就是(3,1,0)
同理所有的數組內的數字都是這樣變得,這就是transpose()內參數的變化。
理解了上面,再來理解swapaxes()就很簡單了,swapaxes接受一對軸編號,其實這里我們叫一對維度編號更好吧,比如:
arr.swapaxes(2,1) #就是將第三個維度和第二個維度交換 array([[[ 0, 4], [ 1, 5], [ 2, 6], [ 3, 7]], [[ 8, 12], [ 9, 13], [10, 14], [11, 15]]])
還是那我們的數字7來說,之前的索引是(0,1,3),那么交換之后,就應該是(0,3,1)
多說一句,其實numpy高維數組的切片也是這樣選取維度的。
以上這篇對numpy中的transpose和swapaxes函數詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python數據結構與算法之常見的分配排序法示例【桶排序與基數排序】
這篇文章主要介紹了Python數據結構與算法之常見的分配排序法,結合實例形式分析了桶排序與基數排序的相關原理及實現技巧,需要的朋友可以參考下2017-12-12
深入探討PythonLogging模塊的高級用法與性能優(yōu)化
在Python應用程序中,日志處理是一項至關重要的任務,本文將探索Logging模塊的高級用法,包括日志級別、格式化、處理程序等方面的功能,需要的可以參考下2024-04-04

