[Python][NumPy]如何在 Numpy 數組中查找值的索引?

更新於 2024/03/13閱讀時間約 5 分鐘

如何在 Numpy 數組中查找值的索引?

就是使用numpy.where

語法:

numpy.where() 函數的語法中,方括號 [] 表示其中的參數是可選的。而斜杠 / 表示斷行符號,它的作用是將一行的代碼分成多行以提高可讀性。

所以 [x, y, ]/ 表示這兩個參數 xy 是可選的,可以根據需要提供或者省略。

numpy.where(condition, [x, y, ]/)
  • condition:布林陣列或布林條件。
  • x, y:選擇性參數,用於指定根據 condition 中的 TrueFalse 元素所返回的結果。如果省略,則 numpy.where() 函數將返回一個包含滿足 condition 的元素的索引的元組。

這個函數可以根據 condition 中的值,返回不同的結果。如果提供了 xy,則 numpy.where() 將根據 condition 中的值選擇性地返回 xy 中的元素。


基本用法

numpy.where()返回一個包含滿足條件的元素索引的元組

numpy.where(condition)

在這種基本用法中,condition 是一個布林陣列,它描述了你希望在陣列中查找的條件。

範例

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
indices = np.where(arr > 2)
print(indices) # 输出: (array([2, 3, 4]),)
indices = np.where(arr > 2)[0] #單純只取索引值
print(indices) # 输出: [2, 3, 4]

根據條件選擇性地返回兩個值中的一個

numpy.where(condition, x, y)

在這種形式中,condition 是一個布林陣列,xy 是兩個具有相同形狀的陣列,它們分別對應於 conditionTrueFalse 的元素。

numpy.where() 函數將返回一個新的陣列,其中 condition 中的 True 元素被替換為 x 中對應的元素,而 False 元素被替換為 y 中對應的元素。

範例1

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
result = np.where(arr > 2, 'yes', 'no')
print(result) # 输出: ['no' 'no' 'yes' 'yes' 'yes']

範例2

滿足條件則該元素*10,沒有則保持原狀。

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
result = np.where(arr > 2, arr, arr * 10)
print(result) # 输出: [10 20 3 4 5]

兩個條件判斷

np.where(condition1, x, np.where(condition2, y, z))

這種形式中,首先根據 condition1 執行 np.where(),然後根據 condition2 選擇 yz 中的元素。如果 condition1True,則返回 x,否則根據 condition2 返回 yz 中的元素。

範例

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
result = np.where(arr > 2, '比二大', np.where(arr < 2, '比二小', '等於二'))
print(result) # 输出: ['比二小' '等於二' '比二大' '比二大' '比二大']

第一次根據條件 arr > 2 選擇返回的值。如果條件為真,則返回 '比二大';否則進行第二次 numpy.where() 調用,根據條件 arr < 2 選擇返回的值。如果條件為真,則返回 '比二小';否則返回 '等於二'

有點繞口令。

這些是 numpy.where() 函數的基本語法形式,通過適當地使用它們,你可以根據不同的需求靈活地進行陣列元素的選擇和替換。

其他應用

我最常就是應用在影像處理上,得到相對應於圖像中座標值。

以下是我其他文章,有應用到numpy.where()這個方法的應用

[OpenCV應用][Python]利用numpy找出物件邊緣求出寬度及高度

參考文獻

https://numpy.org/doc/stable/release/1.23.0-notes.html#faster-np-where





avatar-img
128會員
209內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
f字符串(f-string)在Python 3.6版本引入了新特性,可以更方便地格式化字符串。本文介紹了f-string的基本使用方法,以及表達式、運算符、格式化控制、字典和列表的應用,以及調用方法和函數等。f-string提供了一種更靈活的方式,使你能夠控制字符串的外觀,以滿足不同情況下的需求。
NumPy 提供了一種 N 維數組類型 ndarray(N-dimensional array) ,它描述了相同類型的「數據類型」的集合。 多維數組: ndarray 是一個 N 維數組,其中 N 可以是任意整數。一維數組是向量,二維數組是矩陣
NumPy在圖像處理、機器學習、數學和統計學等領域中被廣泛應用。 以下是一些常見的應用場景: 數據處理和分析: NumPy提供了高效的多維數組(nd array)和相應的操作函數,使得對大型數據集進行快速、有效的操作變得容易。
在程式開發中,協作合作專案時,利用type hint,可以快速知道函式輸入及輸出的資料型別,在後續的維護時也會更加方便及可讀。 Type hints 是Python 3.5 版本引入的功能,它允許在函數宣告中指定參數和傳回值的類型。Type hints 是一種可選的註解形式,不會影響程式碼的運行,
在現實生活中,充滿的警報及安全措施,總會設個安全線在那,若觸碰到底線時則會有警報響起。 在Python也有類似的作法,如果希望在某個條件達到時,就拉起警報不要讓程式繼續進行下去,就適合使用raise 這種機制讓開發者能夠在程序執行時檢測到不正確的條件,然後通過引發異常停止程序的執行或通知使用者。
在實務上,條碼槍傳送的資訊可能包含不可見字符或控制字符。這可能是因為條碼槍在傳送條碼數據時使用了一些特殊字符,這些字符在可見字符集合之外,例如 \x06 就是 ASCII 中的 "ACK" 控制字符。 本文將探討,如何查詢及處理這些特殊字符。
f字符串(f-string)在Python 3.6版本引入了新特性,可以更方便地格式化字符串。本文介紹了f-string的基本使用方法,以及表達式、運算符、格式化控制、字典和列表的應用,以及調用方法和函數等。f-string提供了一種更靈活的方式,使你能夠控制字符串的外觀,以滿足不同情況下的需求。
NumPy 提供了一種 N 維數組類型 ndarray(N-dimensional array) ,它描述了相同類型的「數據類型」的集合。 多維數組: ndarray 是一個 N 維數組,其中 N 可以是任意整數。一維數組是向量,二維數組是矩陣
NumPy在圖像處理、機器學習、數學和統計學等領域中被廣泛應用。 以下是一些常見的應用場景: 數據處理和分析: NumPy提供了高效的多維數組(nd array)和相應的操作函數,使得對大型數據集進行快速、有效的操作變得容易。
在程式開發中,協作合作專案時,利用type hint,可以快速知道函式輸入及輸出的資料型別,在後續的維護時也會更加方便及可讀。 Type hints 是Python 3.5 版本引入的功能,它允許在函數宣告中指定參數和傳回值的類型。Type hints 是一種可選的註解形式,不會影響程式碼的運行,
在現實生活中,充滿的警報及安全措施,總會設個安全線在那,若觸碰到底線時則會有警報響起。 在Python也有類似的作法,如果希望在某個條件達到時,就拉起警報不要讓程式繼續進行下去,就適合使用raise 這種機制讓開發者能夠在程序執行時檢測到不正確的條件,然後通過引發異常停止程序的執行或通知使用者。
在實務上,條碼槍傳送的資訊可能包含不可見字符或控制字符。這可能是因為條碼槍在傳送條碼數據時使用了一些特殊字符,這些字符在可見字符集合之外,例如 \x06 就是 ASCII 中的 "ACK" 控制字符。 本文將探討,如何查詢及處理這些特殊字符。
你可能也想看
Google News 追蹤
Thumbnail
投資新手大多從身邊市場開始著手,選擇台股市場入門,單筆投資或台股定期定額投資,隨著經驗累積,進入美股市場也是好選擇,這篇文章帶你前進美股投資,證券開戶選擇國內券商複委託,使用美股定期定額投資,並以國泰 CUBE App為例說明。 內容目錄: 1.一站式開戶:以國泰世華 CUBE App 為例
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
Thumbnail
當我們在撰寫一套系統的時候, 總是會提供一個介面讓使用者來觸發功能模組並回傳使用者所需的請求, 而傳統的安裝包模式總是太侷限, 需要個別主機獨立安裝, 相當繁瑣, 但隨著時代的演進與互聯網的崛起, 大部分的工作都可以藉由網頁端、裝置端來觸發, 而伺服端則是負責接收指令、運算與回傳結果, 雲端
Thumbnail
我們在 【Python 軍火庫🧨 - websockets】傳送/接收音檔並轉換成numpy(基礎篇) 有聊到要如何透過Websocket來傳送音檔,但上一篇的作法是在Client端就進行音訊的解碼動作,這樣會有一個缺點,假設Client的機器運算效能較差,那麼運算的結果勢必會較慢出現,對於使用者
Thumbnail
關於Websockets的篇章, 有興趣的朋友歡迎參考: 【Python 軍火庫 - websockets】雙向溝通的渠道 【Python 軍火庫 - websockets】用json來溝通吧! 而這一篇章的主題主要是來分享如何透過websockets傳遞音檔並進行解碼, 我們都知道聲
隨著數據越來越成為商業和決策的關鍵因素,數據科學變得越來越重要。而Python,作為一個強大且多用途的編程語言,在數據科學領域中佔有重要地位。不管你是想在工作上提升技能,還是在個人生活中探索數據,Python都可以幫助你解鎖數據的力量。本文將介紹Python在數據科學中的應用,並提供一些入門指南,讓
使用Python的Threading模組設計一個能夠在背景待命的程式,並在等待5秒後自動結束。我們將使用執行緒來執行背景任務,並使用定時等待來控制程式的結束時間。這種方法適用於不依賴於特定按鍵事件的情況,而是在固定的時間後自動退出程式。
時間在程式設計中扮演著重要的角色,Python 的 time 模組提供了許多與時間相關的功能和函式,可以方便地進行時間的獲取、格式化、延遲等操作。在本文中,我們將介紹 time 模組的一些常見用法和範例。
Thumbnail
我們將探索函式的定義和調用,這是程式設計中非常重要且強大的概念,它可以將大型程式切割成小的、可重複使用的函式。讓我們一起來了解吧!函式的定義、呼叫和返回值是學習函式的核心。
Thumbnail
在先前的教學中,我都教大家程式寫完以後就架設到「Heroku」的雲端上做使用,但如果你想嘗試其他自創的功能,這時一定會需要一直Debug,如果每次想看結果都要部屬一次Heroku,那這樣就變得相當麻煩,所以今天我就教大家如何利用本機端來提供外網連接的方式吧!!
Max和Maximum的差別為 np.max() 最少接收一個參數,回傳所有內容的最大值 結果 np.maximum(A, B) 最少接收兩個參數,回傳A與B逐個比較的最大值 結果
變數的命名規則 : 只能包含以下字元     ─ 大寫字母(A到Z)     ─ 小寫字母(a到z)     ─ 數字(0到9)     ─ 底線(_) 區分大小寫 開頭只能為字母或底線,不可為數字  以底線開頭會被特殊對待 不能是保留字(關鍵字) 參考文獻: 精通
Thumbnail
投資新手大多從身邊市場開始著手,選擇台股市場入門,單筆投資或台股定期定額投資,隨著經驗累積,進入美股市場也是好選擇,這篇文章帶你前進美股投資,證券開戶選擇國內券商複委託,使用美股定期定額投資,並以國泰 CUBE App為例說明。 內容目錄: 1.一站式開戶:以國泰世華 CUBE App 為例
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
Thumbnail
當我們在撰寫一套系統的時候, 總是會提供一個介面讓使用者來觸發功能模組並回傳使用者所需的請求, 而傳統的安裝包模式總是太侷限, 需要個別主機獨立安裝, 相當繁瑣, 但隨著時代的演進與互聯網的崛起, 大部分的工作都可以藉由網頁端、裝置端來觸發, 而伺服端則是負責接收指令、運算與回傳結果, 雲端
Thumbnail
我們在 【Python 軍火庫🧨 - websockets】傳送/接收音檔並轉換成numpy(基礎篇) 有聊到要如何透過Websocket來傳送音檔,但上一篇的作法是在Client端就進行音訊的解碼動作,這樣會有一個缺點,假設Client的機器運算效能較差,那麼運算的結果勢必會較慢出現,對於使用者
Thumbnail
關於Websockets的篇章, 有興趣的朋友歡迎參考: 【Python 軍火庫 - websockets】雙向溝通的渠道 【Python 軍火庫 - websockets】用json來溝通吧! 而這一篇章的主題主要是來分享如何透過websockets傳遞音檔並進行解碼, 我們都知道聲
隨著數據越來越成為商業和決策的關鍵因素,數據科學變得越來越重要。而Python,作為一個強大且多用途的編程語言,在數據科學領域中佔有重要地位。不管你是想在工作上提升技能,還是在個人生活中探索數據,Python都可以幫助你解鎖數據的力量。本文將介紹Python在數據科學中的應用,並提供一些入門指南,讓
使用Python的Threading模組設計一個能夠在背景待命的程式,並在等待5秒後自動結束。我們將使用執行緒來執行背景任務,並使用定時等待來控制程式的結束時間。這種方法適用於不依賴於特定按鍵事件的情況,而是在固定的時間後自動退出程式。
時間在程式設計中扮演著重要的角色,Python 的 time 模組提供了許多與時間相關的功能和函式,可以方便地進行時間的獲取、格式化、延遲等操作。在本文中,我們將介紹 time 模組的一些常見用法和範例。
Thumbnail
我們將探索函式的定義和調用,這是程式設計中非常重要且強大的概念,它可以將大型程式切割成小的、可重複使用的函式。讓我們一起來了解吧!函式的定義、呼叫和返回值是學習函式的核心。
Thumbnail
在先前的教學中,我都教大家程式寫完以後就架設到「Heroku」的雲端上做使用,但如果你想嘗試其他自創的功能,這時一定會需要一直Debug,如果每次想看結果都要部屬一次Heroku,那這樣就變得相當麻煩,所以今天我就教大家如何利用本機端來提供外網連接的方式吧!!
Max和Maximum的差別為 np.max() 最少接收一個參數,回傳所有內容的最大值 結果 np.maximum(A, B) 最少接收兩個參數,回傳A與B逐個比較的最大值 結果
變數的命名規則 : 只能包含以下字元     ─ 大寫字母(A到Z)     ─ 小寫字母(a到z)     ─ 數字(0到9)     ─ 底線(_) 區分大小寫 開頭只能為字母或底線,不可為數字  以底線開頭會被特殊對待 不能是保留字(關鍵字) 參考文獻: 精通