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

更新於 發佈於 閱讀時間約 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
136會員
225內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言
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
全新 vocus 挑戰活動「方格人氣王」來啦~四大挑戰任你選,留言 / 愛心 / 瀏覽數大 PK,還有新手專屬挑戰!無論你是 vocus 上活躍創作者或剛加入的新手,都有機會被更多人看見,獲得站上版位曝光&豐富獎勵!🏆
Thumbnail
本文探討AI筆記工具的優缺點、選擇建議及未來趨勢,比較NotebookLM、OneNote+Copilot、Notion AI、Obsidian+GPT插件和Palantir Foundry等工具,並強調安全注意事項及個人需求評估的重要性。
Thumbnail
本篇文章介紹 Python 的 asyncio 標準庫,說明其用於非同步編程的優勢,並深入探討 await, asyncio.create_task(), asyncio.gather() 的用法與差異,以提升 I/O 密集型應用的效能。
在 Python 的數據處理與科學計算領域,NumPy 是一個不可或缺的基礎工具。它的強大在於提供了高效的多維陣列操作,並支援向量化運算,極大地提升了程式執行效率。本篇文章將詳細介紹 NumPy 的基本概念、功能以及實踐應用,幫助你快速上手這個重要的工具。
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
在某些特殊情況下,需要將圖片進行黑白反轉,例如Tesseract(OCR辨識引擎)就有建議黑底白字的狀況下辨識率較高。 本文將使用 NumPy 進行影像黑白反轉,並顯示反轉前後的影像。
Thumbnail
NumPy 是 Python 語言的一個擴充程式庫,支援高階大規模的多維陣列與矩陣運算的數學函式函式庫。 NumPy 2.0.0 是自 2006 年以來的第一個主要發行版本,此重要版本標誌著 NumPy 發展歷程中的一項重要里程碑,為使用者提供了豐富的增強功能和改進,並為未來的功能開發奠定了基礎。
np.unique 是 NumPy 庫中的一個函數,用於找出陣列中的相同的數值。這個函數可以單純過濾只取唯一值出來,也可以選擇性地返回這些唯一值在原始陣列中的中的索引和計數。 函式 unique = np.unique(ar, return_index=False, return_inver
NumPy(Numeric Python)是Python中用於科學計算的核心庫之一。它提供了高性能的多維陣列對象(即ndarray)以及用於處理這些陣列的各種函數和工具。 在NumPy中,有幾個常用的指令可以用來創建陣列
Thumbnail
全新 vocus 挑戰活動「方格人氣王」來啦~四大挑戰任你選,留言 / 愛心 / 瀏覽數大 PK,還有新手專屬挑戰!無論你是 vocus 上活躍創作者或剛加入的新手,都有機會被更多人看見,獲得站上版位曝光&豐富獎勵!🏆
Thumbnail
本文探討AI筆記工具的優缺點、選擇建議及未來趨勢,比較NotebookLM、OneNote+Copilot、Notion AI、Obsidian+GPT插件和Palantir Foundry等工具,並強調安全注意事項及個人需求評估的重要性。
Thumbnail
本篇文章介紹 Python 的 asyncio 標準庫,說明其用於非同步編程的優勢,並深入探討 await, asyncio.create_task(), asyncio.gather() 的用法與差異,以提升 I/O 密集型應用的效能。
在 Python 的數據處理與科學計算領域,NumPy 是一個不可或缺的基礎工具。它的強大在於提供了高效的多維陣列操作,並支援向量化運算,極大地提升了程式執行效率。本篇文章將詳細介紹 NumPy 的基本概念、功能以及實踐應用,幫助你快速上手這個重要的工具。
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
在某些特殊情況下,需要將圖片進行黑白反轉,例如Tesseract(OCR辨識引擎)就有建議黑底白字的狀況下辨識率較高。 本文將使用 NumPy 進行影像黑白反轉,並顯示反轉前後的影像。
Thumbnail
NumPy 是 Python 語言的一個擴充程式庫,支援高階大規模的多維陣列與矩陣運算的數學函式函式庫。 NumPy 2.0.0 是自 2006 年以來的第一個主要發行版本,此重要版本標誌著 NumPy 發展歷程中的一項重要里程碑,為使用者提供了豐富的增強功能和改進,並為未來的功能開發奠定了基礎。
np.unique 是 NumPy 庫中的一個函數,用於找出陣列中的相同的數值。這個函數可以單純過濾只取唯一值出來,也可以選擇性地返回這些唯一值在原始陣列中的中的索引和計數。 函式 unique = np.unique(ar, return_index=False, return_inver
NumPy(Numeric Python)是Python中用於科學計算的核心庫之一。它提供了高性能的多維陣列對象(即ndarray)以及用於處理這些陣列的各種函數和工具。 在NumPy中,有幾個常用的指令可以用來創建陣列