numpy多維數(shù)組索引問題
numpy多維數(shù)組索引
切片索引
python的numpy中的多維數(shù)組,有時(shí)候需要定位到數(shù)組中的某些區(qū)域元素的位置。
- 一維
一維數(shù)組很簡單,我們可以直接指定索引,或者使用切片索引。
比如: data[0],這時(shí)候輸出單個(gè)具體數(shù)值,沒有維度
data[:3],這時(shí)候輸出一個(gè)一維的子數(shù)組
- 二維
二維數(shù)組也不難理解
data[0,1] 定位一個(gè)指定的具體數(shù)值,沒有維度
data[0,:]定位一維數(shù)組
data[:,:] 定位二維數(shù)組
- 三維
三維數(shù)組有些難以理解,之前遇到的三維數(shù)組有點(diǎn)蒙圈,現(xiàn)在重點(diǎn)理解一下。
比如現(xiàn)在創(chuàng)建一個(gè)三維數(shù)組
array([[[ 0, ?1, ?2], ? ? ? ? [ 3, ?4, ?5], ? ? ? ? [ 6, ?7, ?8]], ? ? ? ?[[ 9, 10, 11], ? ? ? ? [12, 13, 14], ? ? ? ? [15, 16, 17]], ? ? ? ?[[18, 19, 20], ? ? ? ? [21, 22, 23], ? ? ? ? [24, 25, 26]]])
data[:,:,1] 會定位輸出一個(gè)二維數(shù)組,具體怎么輸出這個(gè)二維數(shù)組呢,我們把第一列的索引看作第一維,第二列索引看作第二維,第三列索引看作第三維,第三維是個(gè)確定的索引,所以我們的第三維數(shù)組將會降維的一個(gè)具體的值,最后得到的二維數(shù)組將會是第一維和第二維組成的一個(gè)二維數(shù)組。
array([[ 1, ?4, ?7], ? ? ? ?[10, 13, 16], ? ? ? ?[19, 22, 25]])
同理data[:,1,1]會定位輸出一個(gè)一維數(shù)組,他的輸出是:
array([ 4, 13, 22])
四維
四維和三維類似,具體到哪個(gè)維度的索引我們就降維哪一維
布爾索引
一維
多維數(shù)組的索引與切片(基于numpy)
根據(jù)我的理解,關(guān)于多維數(shù)組的索引與切片,不需要可以去記他的模式,這一小塊,唯一需要理解的是這個(gè)多維數(shù)組的shape.只要把這個(gè)概念真正理解了,關(guān)于索引與切片問題迎刃而解了;
首先初始化上面的這樣一個(gè)多維數(shù)組x,觀察其x的數(shù)組結(jié)構(gòu),然后看x.shape=(2,3,3). 觀察這個(gè)結(jié)果,其實(shí)含義可以理解為,后面的(3,3)是一個(gè)矩陣,表示其行數(shù)與列數(shù),前面的2表示到底有幾個(gè)這樣的矩陣。你再查看其x的表示結(jié)構(gòu),是不是很好理解了。
那么現(xiàn)在我們要利用索引方式取特定位置上的數(shù),注意其索引是從0開始的,那么取幾個(gè)索引,看看是不是理想的結(jié)果、
根據(jù)理解,x[0][2][1]表示取第一個(gè)矩陣中,第三行第二列的數(shù)字。(注意索引是從0開始的)
如果上面的你真正理解,那么切片也不是什么困難的,下面來切一下:
基于上面的結(jié)果,這里做了兩個(gè)切片。(注意切片的值。如1:3, 實(shí)際上只能取1,2 這里要注意)
其中一個(gè)切片為x[1][0][1:3] 實(shí)際上可以理解為我要在第二個(gè)矩陣中做切片。怎么切那? 取第一行的1~2列、、看看結(jié)果、、(還是要注意索引從0開始哦)
另外一個(gè)切片是x[0][2][:2]
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python將txt文檔每行內(nèi)容循環(huán)插入數(shù)據(jù)庫的方法
今天小編就為大家分享一篇python將txt文檔每行內(nèi)容循環(huán)插入數(shù)據(jù)庫的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12python人工智能tensorflow函數(shù)tf.get_variable使用方法
這篇文章主要為大家介紹了python人工智能tensorflow函數(shù)tf.get_variable使用方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python如何使用標(biāo)準(zhǔn)庫tmpfile庫創(chuàng)建臨時(shí)文件
這篇文章主要介紹了Python如何使用標(biāo)準(zhǔn)庫tmpfile庫創(chuàng)建臨時(shí)文件問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02Python的Twisted框架上手前所必須了解的異步編程思想
Twisted是Python世界中人氣最高的framework之一,異步的工作模式使其名揚(yáng)天下,這里為大家總結(jié)了Python的Twisted框架上手前所必須了解的異步編程思想,需要的朋友可以參考下2016-05-05Python中使用threading.Event協(xié)調(diào)線程的運(yùn)行詳解
這篇文章主要介紹了Python中使用threading.Event協(xié)調(diào)線程的運(yùn)行詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05Python多線程采集二手房源數(shù)據(jù)信息流程詳解
這篇文章主要介紹了Python多線程采集二手房源數(shù)據(jù)信息流程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-05-05