Numpy數(shù)組的轉(zhuǎn)置和軸交換的實(shí)現(xiàn)
NumPy 數(shù)組在進(jìn)行轉(zhuǎn)置時(shí)不會(huì)實(shí)際移動(dòng)內(nèi)存中的任何數(shù)據(jù) 位置只是改變對(duì)原始矩陣的索引方式 ,比如我原來(lái)是行索引現(xiàn)在變?yōu)榱兴饕?/p>
轉(zhuǎn)置是一種視圖并不是對(duì)原數(shù)組的復(fù)制數(shù)組轉(zhuǎn)置擁有transpose方法,也有特殊的T屬性
對(duì)于numpy數(shù)組的轉(zhuǎn)置僅限于一維和二維數(shù)組,使用的是 numpy中的T 屬性
創(chuàng)建一個(gè)0-15的一維數(shù)組,并且對(duì)它進(jìn)行了數(shù)組重組,變?yōu)?2 x 2 x 4的三維數(shù)組,并對(duì)它進(jìn)行轉(zhuǎn)置
import numpy as np #創(chuàng)建一個(gè)三維數(shù)組,這個(gè)三維數(shù)組的形狀是 2 x 2 x 4 ,三維數(shù)組包括兩個(gè)二維數(shù)組,二維數(shù)組中包含兩個(gè)一維數(shù)組,一維數(shù)組的數(shù)組維度長(zhǎng)度是 4 arr = np.arange(16) arr2 = arr.reshape(4,-1) arr3 = arr.T 0

我們通過(guò)數(shù)組的迭代來(lái)檢查numpy數(shù)組的轉(zhuǎn)置是否對(duì)原數(shù)組位置做了改變,這里我們要引用numpy.nditer() 方法
對(duì)原數(shù)組進(jìn)行迭代:
arr = np.arange(16) arr2 = arr.reshape(4,-1) for x in np.nditer(arr2): # 需要注意的是for循環(huán)的末尾一定要加上 冒號(hào)(:) print(x,end=" ")

我們對(duì)通過(guò) arr2的轉(zhuǎn)置數(shù)組arr3做迭代
arr = np.arange(16) arr2 = arr.reshape(4,-1) arr3 = arr2.T for xx in np.nditer(arr3): print(xx,end=" ")

可以發(fā)現(xiàn)他們的打印結(jié)果未發(fā)生任何變化,所以可以證實(shí),數(shù)組轉(zhuǎn)置并不是改變了原數(shù)組的元素位置,只是改變了它的索引方式。
其實(shí)我可以告訴你,一個(gè)最終結(jié)果,原數(shù)組和對(duì)原數(shù)組的轉(zhuǎn)置在內(nèi)存中是共享數(shù)據(jù)的,,類(lèi)似于家里的小狗叫做旺旺 和小黃,其實(shí)指的是是一個(gè)東西
在這里需要注意的是,在數(shù)組轉(zhuǎn)置下對(duì)數(shù)組作修改一定會(huì)影響到原數(shù)組
例如:
arr = np.arange(10).reshape(2,5) arr2 = arr.T #為了方便理解我上述說(shuō)的意思,我引用下面的實(shí)例 #對(duì)arr2中的某一數(shù)組作以修改 print(arr) # 原數(shù)組 arr2[2][1] = 200 #在原數(shù)組轉(zhuǎn)置后,對(duì)其中 某一個(gè)元素做修改 print(arr2) # 打印對(duì)原數(shù)組轉(zhuǎn)之后的數(shù)組 print(arr) #打印原數(shù)組

發(fā)現(xiàn)了什么我們最初定義的數(shù)組被篡改了,不知道大家對(duì)數(shù)組的轉(zhuǎn)置和原數(shù)組公用一個(gè)內(nèi)存位置的概念的理解是否變得容易
array.transpose() 軸交換
雖然,transpose方法可以實(shí)現(xiàn)轉(zhuǎn)置,但是它的真正用途是軸交換,我前面提到.T 方法只適合用于一二數(shù)組,三維,四維就要用到transpose()方法。
transpose() 方法中的參數(shù)和數(shù)組的維度有關(guān),拿三位數(shù)組來(lái)說(shuō)共需要三個(gè)參數(shù)分別是,
transpose(x,y,z)其中的參數(shù)分別對(duì)應(yīng)0,1,2,只需要變換軸對(duì)應(yīng)數(shù)字參數(shù)的順序就可以將數(shù)組進(jìn)行軸的變換。
原數(shù)組對(duì)應(yīng)的參數(shù)順序是,transpose(0,1,2)
import numpy as np arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]) print(arr) arr2 = arr.transpose((0,2,1)) #我在這里改變了列和縱深的順序 print(arr2)


經(jīng)過(guò)軸交換后arr數(shù)組打印結(jié)果

這一塊比較難于理解,我也是看了好久現(xiàn)在也是馬馬虎虎,我可以告訴大家一個(gè)比較笨的方法
請(qǐng)記住,(x,y,z)或者(0,1,2)分別代表行軸,列軸,縱深軸,transpose 方法是對(duì)它們的軸進(jìn)行了交換。
到此這篇關(guān)于Numpy數(shù)組的轉(zhuǎn)置和軸交換的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Numpy數(shù)組轉(zhuǎn)置和軸交換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python編程使用NLTK進(jìn)行自然語(yǔ)言處理詳解
這篇文章主要介紹了Python編程使用NLTK進(jìn)行自然語(yǔ)言處理詳解,涉及了nltk和開(kāi)發(fā)環(huán)境的簡(jiǎn)單介紹,以及SentencesSegment,SentencesSegment等內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11
Python編程中常見(jiàn)的錯(cuò)誤及其解決方法總結(jié)
在開(kāi)發(fā) Python 程序時(shí),錯(cuò)誤幾乎是無(wú)法避免的,無(wú)論是新手還是經(jīng)驗(yàn)豐富的開(kāi)發(fā)者,都可能在編程過(guò)程中遇到各種各樣的問(wèn)題,調(diào)試錯(cuò)誤不僅消耗時(shí)間,還可能導(dǎo)致生產(chǎn)環(huán)境出現(xiàn)問(wèn)題,為了提高調(diào)試效率,本文將總結(jié)一些 Python 編程中常見(jiàn)的錯(cuò)誤及其解決方法,并提供實(shí)用的調(diào)試技巧2025-02-02
Python pyautogui模擬鍵盤(pán)輸入操作的示例詳解
在自動(dòng)化辦公和提高工作效率的今天,Python的pyautogui庫(kù)成為了我們模擬鍵盤(pán)和鼠標(biāo)操作的得力助手,下面我們看看如何使用pyautogui來(lái)模擬鍵盤(pán)輸入吧2025-03-03
windows下python安裝paramiko模塊和pycrypto模塊(簡(jiǎn)單三步)
這篇文章主要給大家介紹了通過(guò)簡(jiǎn)單的三個(gè)步驟在windows下python中安裝paramiko模塊和pycrypto模塊的相關(guān)資料,文中安裝的步驟,簡(jiǎn)單而且又易于大家理解,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。2017-07-07
python進(jìn)階之JSON數(shù)據(jù)解析完整示例
Python作為一種強(qiáng)大的編程語(yǔ)言,提供了多種方法來(lái)處理JSON數(shù)據(jù),使其在數(shù)據(jù)解析、處理和生成方面變得異常簡(jiǎn)便,這篇文章主要介紹了python進(jìn)階之JSON數(shù)據(jù)解析的相關(guān)資料,需要的朋友可以參考下2025-12-12
python清除PDF文件中水印的項(xiàng)目實(shí)踐
本文主要介紹了python清除PDF文件中水印的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-05-05
Python調(diào)用ChatGPT?API接口的用法詳解
ChatGPT可以實(shí)現(xiàn)chat,生成圖片,識(shí)別關(guān)鍵,改錯(cuò)等等功能,本文簡(jiǎn)單的給大家介紹一下如何使用python調(diào)用ChatGPT?API接口,感興趣的小伙伴可以參考一下2023-05-05
Django框架中render_to_response()函數(shù)的使用方法
這篇文章主要介紹了Django框架中render_to_response()函數(shù)的使用方法,注意范例中該方法的參數(shù)的使用,需要的朋友可以參考下2015-07-07

