np.where在多維數(shù)組的應(yīng)用方式
np.where在多維數(shù)組的應(yīng)用
函數(shù)用途
返回查找的參數(shù),在數(shù)組中的索引。
Code
舉例:
- 一般卷積神經(jīng)網(wǎng)絡(luò)的輸入或者輸出為一個(gè)四維的數(shù)組/Tensor。
- 一般為[batch_size, channel, height, width]
下面代碼目標(biāo)是輸出所有值為0的數(shù)字的索引。
output = [[
[[1, 0, 2],
[2, 1, 0],
[1, 0, 0]]
]]
arr = np.array(output)
print(arr.shape)
res = np.where(arr==0)
print(res)
Output
# print(arr.shape) (1, 1, 3, 3) # print(res) (array([0, 0, 0, 0], dtype=int64), array([0, 0, 0, 0], dtype=int64), array([0, 1, 2, 2], dtype=int64), array([1, 2, 1, 2], dtype=int64))
np.where的輸出結(jié)果為一個(gè)list,里面包含4個(gè)ndarray,分別代表四維。
[0, 0, 0, 0] # axis=0 [0, 0, 0, 0] # axis=1 [0, 1, 2, 2] # axis=2 [1, 2, 1, 2] # axis=3
正確讀值,從列來(lái)看,四個(gè)0值的索引分別是
print(arr[0][0][0][1]) # output:0 print(arr[0][0][1][2]) # output:0 print(arr[0][0][2][1]) # output:0 print(arr[0][0][2][2]) # output:0
np.where()用法解析
語(yǔ)法說(shuō)明
np.where(condition,x,y)
- 當(dāng)where內(nèi)有三個(gè)參數(shù)時(shí),第一個(gè)參數(shù)表示條件,當(dāng)條件成立時(shí)where方法返回x,當(dāng)條件不成立時(shí)where返回y
np.where(condition)
- 當(dāng)where內(nèi)只有一個(gè)參數(shù)時(shí),那個(gè)參數(shù)表示條件,當(dāng)條件成立時(shí),where返回的是每個(gè)符合condition條件元素的坐標(biāo),返回的是以元組的形式,坐標(biāo)以tuple的形式給出,通常原數(shù)組有多少維,輸出的tuple中就包含幾個(gè)數(shù)組,分別對(duì)應(yīng)符合條件元素的各維坐標(biāo)。
多條件condition
- -&表示與,|表示或。
- 如a = np.where((a>0)&(a<5), x, y),當(dāng)a>0與a<5滿足時(shí),返回x的值,當(dāng)a>0與a<5不滿足時(shí),返回y的值。
- 注意:x, y必須和a保持相同維度,數(shù)組的數(shù)值才能一一對(duì)應(yīng)。
示例
(1)一個(gè)參數(shù)
import numpy as np a = np.arange(0, 100, 10) b = np.where(a < 50) c = np.where(a >= 50)[0] print(a) print(b) print(c)
結(jié)果如下:
[ 0 10 20 30 40 50 60 70 80 90]
(array([0, 1, 2, 3, 4]),)
[5 6 7 8 9]
說(shuō)明:
- b是符合小于50條件的元素位置,b的數(shù)據(jù)類型是tuple
- c是符合大于等于50條件的元素位置,c的數(shù)據(jù)類型是numpy.ndarray
(2)三個(gè)參數(shù)
a = np.arange(10) b = np.arange(0,100,10) print(np.where(a > 5, 1, -1)) print(b) print(np.where((a>3) & (a<8),a,b)) c=np.where((a<3) | (a>8),a,b) print(c)
結(jié)果如下:
[-1 -1 -1 -1 -1 -1 1 1 1 1]
[ 0 10 20 30 40 50 60 70 80 90]
[ 0 10 20 30 4 5 6 7 80 90]
[ 0 1 2 30 40 50 60 70 80 9]
說(shuō)明:
- np.where(a > 5, 1, -1) ,滿足條件是1,不滿足是-1
- np.where((a>3) & (a<8),a,b),滿足條件是a ,不滿足是b ,a和b的維度相同
注意:
& | 與和或,每個(gè)條件一定要用括號(hào),否則報(bào)錯(cuò)
c=np.where((a<3 | a>8),a,b)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python數(shù)組過(guò)濾實(shí)現(xiàn)方法
這篇文章主要介紹了python數(shù)組過(guò)濾實(shí)現(xiàn)方法,涉及Python針對(duì)數(shù)組的相關(guān)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
對(duì)python判斷ip是否可達(dá)的實(shí)例詳解
今天小編就為大家分享一篇對(duì)python判斷ip是否可達(dá)的實(shí)例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
Python動(dòng)態(tài)規(guī)劃之零錢(qián)兌換問(wèn)題詳解
這篇文章主要介紹了Python動(dòng)態(tài)規(guī)劃之零錢(qián)兌換問(wèn)題詳解,這次我們就按照套路模板,再來(lái)剖析一道經(jīng)典動(dòng)規(guī)題目零錢(qián)兌換,計(jì)算并返回可以湊成總金額所需的 最少的硬幣個(gè)數(shù) 如果沒(méi)有任何一種硬幣組合能組成總金額,返回-1,需要的朋友可以參考下2023-11-11
TensorFlow神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)之張量與變量概念
這篇文章主要為大家介紹了TensorFlow神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的基本知識(shí)張量與變量概念詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-10-10
從基礎(chǔ)到高級(jí)詳解Python對(duì)象序列化的實(shí)戰(zhàn)指南
在軟件開(kāi)發(fā)中,對(duì)象序列化是一項(xiàng)至關(guān)重要的技術(shù),它允許將內(nèi)存中的復(fù)雜對(duì)象轉(zhuǎn)換為可以存儲(chǔ)或傳輸?shù)母袷?本文將展示如何在不同場(chǎng)景下選擇和應(yīng)用最合適的序列化方案,下面就跟隨小編一起了解下吧2025-09-09
解決c++調(diào)用python中文亂碼問(wèn)題
這篇文章主要介紹了c++調(diào)用python中文亂碼問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Python之Scrapy爬蟲(chóng)框架安裝及使用詳解
這篇文章主要為大家詳細(xì)介紹了Python Scrapy爬蟲(chóng)框架安裝及簡(jiǎn)單使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
pandas 實(shí)現(xiàn)將重復(fù)表格去重,并重新轉(zhuǎn)換為表格的方法
下面小編就為大家分享一篇pandas 實(shí)現(xiàn)將重復(fù)表格去重,并重新轉(zhuǎn)換為表格的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
python: 自動(dòng)安裝缺失庫(kù)文件的方法
今天小編就為大家分享一篇python: 自動(dòng)安裝缺失庫(kù)文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10

