網站首頁 編程語言 正文
前言
看Python代碼時,碰見 numpy.transpose 用于高維數組時挺讓人費解,通過一番畫圖分析和代碼驗證,發現 transpose 用法還是很簡單的。
注:評論中說的三維坐標圖中的 0 1 2 3 標反了,已經修正,感謝大家提醒(2019.02)。
正文
Numpy 文檔 numpy.transpose 中做了些解釋,transpose 作用是改變序列,下面是一些文檔Examples:
代碼1:
x = np.arange(4).reshape((2,2))
輸出1:
#x 為:
array([[0, 1],
? ? ? ?[2, 3]])
代碼2:
import numpy as np
x.transpose()
輸出2:
array([[0, 2],
? ? ? ?[1, 3]])
對于二維 ndarray,transpose在不指定參數是默認是矩陣轉置。如果指定參數,有如下相應結果:
代碼3:
x.transpose((0,1))
輸出3:
# x 沒有變化
array([[0, 1],
? ? ? ?[2, 3]])
代碼4:
x.transpose((1,0))
輸出4:
# x 轉置了
array([[0, 2],
? ? ? ?[1, 3]])
這個很好理解:
對于x,因為:
代碼5:
x[0][0] == 0
x[0][1] == 1
x[1][0] == 2
x[1][1] == 3
我們不妨設第一個方括號“[]”為 0軸 ,第二個方括號為 1軸 ,則x可在 0-1坐標系 下表示如下:
代碼6:
因為 x.transpose((0,1)) 表示按照原坐標軸改變序列,也就是保持不變
而 x.transpose((1,0)) 表示交換 ‘0軸’ 和 ‘1軸’,所以就得到如下圖所示結果:
注意,任何時候你都要保持清醒,告訴自己第一個方括號“[]”為 0軸 ,第二個方括號為 1軸
此時,transpose轉換關系就清晰了。
我們來看一個三維的:
代碼7:
import numpy as np
# A是array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
A = np.arange(16)
# 將A變換為三維矩陣
A = A.reshape(2,2,4)
print(A)
輸出7:
A = array([[[ 0, ?1, ?2, ?3],
? ? ? ? ? ? [ 4, ?5, ?6, ?7]],
? ? ? ? ? ??
? ? ? ? ? ?[[ 8, ?9, 10, 11],
? ? ? ? ? ? [12, 13, 14, 15]]])
我們對上述的A表示成如下三維坐標的形式:
所以對于如下的變換都很好理解啦:
代碼8:
A.transpose((0,1,2)) #保持A不變
A.transpose((1,0,2)) #將 0軸 和 1軸 交換
將 0軸 和 1軸 交換:
此時,輸出
代碼9:
A.transpose((1,0,2)) [0][1][2] #根據上圖這個結果應該是10
后面不同的參數以此類推。
原文鏈接:https://blog.csdn.net/u012762410/article/details/78912667
相關推薦
- 2022-09-09 C#流程控制詳解_C#教程
- 2022-08-04 python中可以發生異常自動重試庫retrying_python
- 2022-05-24 Flutter滾動組件之SingleChildScrollView使用詳解_Android
- 2022-06-19 C++學習筆記之類成員指針_C 語言
- 2022-04-08 記一次go語言使用time.Duration類型踩過的坑_Golang
- 2022-08-14 python?open函數中newline參數實例詳解_python
- 2024-01-28 手把手教你使用git上傳文件到倉庫
- 2022-07-21 依賴循環The dependencies of some of the beans in the a
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支