Numpy中的ravel_multi_index函數(shù)用法說明
最近遇到了ravel_multi_index這個函數(shù),官方文檔看不明白,Google了一番好不容易才從一堆示例代碼里理解函數(shù)的意義,記錄一下。
這個函數(shù)主要功能為把給定的一個多維數(shù)組(函數(shù)的第一個參數(shù))看作索引數(shù)組,索引什么呢?去索引一個形狀為dims(函數(shù)的第二個參數(shù)),值為依次增大的自然數(shù)的數(shù)組中的值(可看做由list(range(N))的數(shù)組reshape(dims)而來),意義即為用一個唯一的一維數(shù)來定位(保存)原數(shù)組的二維(或多維(i,j,k,…))的數(shù)對的信息。
把文檔里的示例代碼貼一下來解釋:
>>> arr = np.array([[3,6,6],[4,5,1]])
>>> np.ravel_multi_index(arr, (7,6))
array([22, 41, 37])
>>> np.ravel_multi_index(arr, (7,6), order='F')
array([31, 41, 13])
>>> np.ravel_multi_index(arr, (4,6), mode='clip')
array([22, 23, 19])
>>> np.ravel_multi_index(arr, (4,4), mode=('clip','wrap'))
array([12, 13, 13])
>>> np.ravel_multi_index((3,1,4,1), (6,7,8,9))
1621
示例中arr即為要轉(zhuǎn)換的多維數(shù)組,把a(bǔ)rr的內(nèi)容當(dāng)作索引,即[3,6,6]為橫坐標(biāo),[4,5,1]為縱坐標(biāo),去索引形狀為(7,6),內(nèi)容為從0開始,從左往右,從上往下依次增大的自然數(shù)的數(shù)組中的值。
例如第一個要索引的數(shù)[3,4]即為(7,6)數(shù)組中第4行,第5列的的值,即為3*6+4=22,即為結(jié)果中的第一個數(shù)。依次類推。
了解函數(shù)功能后,其他參數(shù)具體可見官方文檔說明。
補(bǔ)充:numpy.unravel_index 與 numpy.ravel_multi_index的理解
遇到numpy.ravel_multi_index 與numpy.unravel_index 這兩個函數(shù),查了網(wǎng)上的很多資料 都沒講的很清楚,記錄一下。
這兩個函數(shù)是相對應(yīng)的:
numpy.unravel_index(indices, shape, order='C')
其中indices是表示一個一維數(shù)組的index,將這個一維數(shù)組轉(zhuǎn)換成大小為shape([col, row])shape矩陣決定了轉(zhuǎn)變后得到的數(shù)組的行和列的大小,進(jìn)而得到index在新的二維矩陣 中的行index 和列index 其中order決定先是行index,還是先是列index 'C'先是列index 再是行index ‘F'先是行index 再是列index
np.unravel_index([22, 41, 37], (7,6)) (array([3, 6, 6]), array([4, 5, 1]))
numpy.ravel_multi_index是numpy.unravel_index反過來的過程,
numpy.ravel_multi_index(multi_index, dims, mode='raise', order='C')
根據(jù)multi_index中不同數(shù)組代表的具體的索引,以及該數(shù)組的dims的大小 ,得到將該數(shù)組flat成一維數(shù)組 數(shù)據(jù)在一位數(shù)組中的位置。
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
Python爬蟲中Selenium實(shí)現(xiàn)文件上傳
這篇文章主要介紹了Python爬蟲中Selenium實(shí)現(xiàn)文件上傳,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Python 機(jī)器學(xué)習(xí)第一章環(huán)境配置圖解流程
機(jī)器學(xué)習(xí)是一類算法的總稱,這些算法企圖從大量歷史數(shù)據(jù)中挖掘出其中隱含的規(guī)律,并用于預(yù)測或者分類,更具體的說,機(jī)器學(xué)習(xí)可以看作是尋找一個函數(shù),輸入是樣本數(shù)據(jù),輸出是期望的結(jié)果,只是這個函數(shù)過于復(fù)雜,以至于不太方便形式化表達(dá)2021-11-11
python通過對字典的排序,對json字段進(jìn)行排序的實(shí)例
今天小編就為大家分享一篇python通過對字典的排序,對json字段進(jìn)行排序的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python實(shí)戰(zhàn)基礎(chǔ)之Pandas統(tǒng)計某個數(shù)據(jù)列的空值個數(shù)
我們在處理數(shù)據(jù)的時候,經(jīng)常需要檢查數(shù)據(jù)的質(zhì)量,也需要知道出問題的數(shù)據(jù)在哪個位置,下面這篇文章主要給大家介紹了關(guān)于Python實(shí)戰(zhàn)基礎(chǔ)之利用Pandas統(tǒng)計某個數(shù)據(jù)列空值個數(shù)的相關(guān)資料,需要的朋友可以參考下2022-08-08
Python?Decorator裝飾器的創(chuàng)建方法及常用場景分析
這篇文章主要介紹了Python?Decorator裝飾器的創(chuàng)建方法及常用場景,裝飾器可以分成方法裝飾器和類裝飾器,他們的區(qū)別是一個是用函數(shù)實(shí)現(xiàn)的裝飾器,一個是用類實(shí)現(xiàn)的裝飾器,他們也都能在方法和類上進(jìn)行裝飾,需要的朋友可以參考下2022-07-07
對DataFrame數(shù)據(jù)中的重復(fù)行,利用groupby累加合并的方法詳解
今天小編就為大家分享一篇對DataFrame數(shù)據(jù)中的重復(fù)行,利用groupby累加合并的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
使用Python+Flask開發(fā)博客項目并實(shí)現(xiàn)內(nèi)網(wǎng)穿透
Flask是一個使用python編寫的輕量級Web框架,這篇文章我們將使用這個框架編寫一個屬于自己的博客網(wǎng)站!并教你如何通過使用內(nèi)網(wǎng)穿透工具處理項目,讓本地的項目可以在公網(wǎng)訪問,感興趣的可以了解一下2021-11-11

