无主之地2配置高吗|看真人裸体BBBBB|秋草莓丝瓜黄瓜榴莲色多多|真人強奷112分钟|精品一卡2卡3卡四卡新区|日本成人深夜苍井空|八十年代动画片

網易首頁 > 網易號 > 正文 申請入駐

NumPy 函數手冊:條件篩選與邏輯運算

0
分享至

在數據分析、科學計算以及機器學習中,經常需要根據條件對數組進行篩選或邏輯運算。例如:

? 篩選滿足條件的元素

? 獲取符合條件的位置索引

? 構造復雜邏輯表達式(與 / 或 / 非)

? 判斷元素是否屬于某個集合

按照功能劃分,NumPy 中用于邏輯運算與條件篩選的函數通??梢苑譃橐韵聨最悾?/p>

(1)條件篩選與提取

(2)索引獲取

(3)集合判斷

(4)邏輯運算

一、條件篩選與提取

where()

基于條件進行元素選擇或定位:要么返回滿足條件的元素索引,要么按條件在兩個數組之間逐元素選擇結果。

單參數形式:

numpy.where(condition)

三參數形式:

numpy.where(condition, x, y)

參數說明:

? condition:布爾條件數組

? x, y:當 condition 為 True / False 時選擇的值

返回值:

? 在三參數形式 np.where(condition, x, y) 中,返回按條件逐元素選擇后的新數組。即:

result[i] = x[i] if condition[i] else y[i]

? 在單參數形式 np.where(condition) 中,返回滿足條件元素的坐標索引元組

1、三參數形式(條件篩選)

np.where(condition, x, y)

按條件逐元素選擇 x 或 y。

三參數形式中,condition、x、y 需要滿足廣播兼容關系。

示例 1:

b = np.where(a > 3, a, 0)

輸出:

[0 4 0 5]

說明:a > 3 的位置保留原值,其余位置替換為 0。

示例 2:

np.where(a > 2, 1, 0)

輸出:

 [1 1 0]]

說明:condition、x、y 會先進行廣播(broadcasting),再進行逐元素選擇。

2、單參數形式(索引獲?。?/strong>

np.where(condition)

返回滿足條件元素的坐標索引(按軸分組,形式為索引元組)。

說明:在單參數形式下,np.where(condition) 的結果與 np.nonzero(condition) 一致。

示例 1:

np.where(a > 2)

等價于:

np.nonzero(a > 2)

輸出:

(array([0, 0, 1, 1]), array([0, 2, 0, 1]))

np.where(condition) 返回的是:

(行索引數組, 列索引數組)

逐個 True 的位置為:

(1,1) → 4

分別收集索引:

列索引: [0, 2, 0, 1]

示例 2:反取元素

a[np.where(a > 2)]

輸出:

[6 5 3 4]

extract()

根據布爾條件數組,對輸入數組進行篩選,并按一維順序返回所有滿足條件的元素。

numpy.extract(condition, arr)

參數說明:

? condition:布爾條件數組

? arr:輸入數組

示例 1:

b = np.extract(a > 3, a)

輸出:

[4 5]

說明:提取所有大于 3 的元素。

示例 2:

b = np.extract(a > 2, a)

輸出:

[6 5 3 4]

按行優先(C-order)扁平化遍歷,提取所有滿足條件的元素,返回一維數組。本質上等價于布爾索引篩選后返回一維結果:

a[a > 2]

np.extract() 是“按條件篩選元素并返回一維結果”的簡化接口。

compress()

沿指定軸提取元素。返回篩選后的數組。

numpy.compress(condition, a, axis=None)

參數說明:

? condition:布爾數組

? a:輸入數組

? axis:指定軸

示例:

np.compress([True, False], A, axis=0)

輸出:

[[1 2]]

可按軸篩選。當指定 axis 時,condition 的長度應與該軸長度匹配。

與布爾索引類似,但語義更明確。

二、索引獲取

nonzero()

用于獲取數組中所有非零元素的索引位置(按軸分組返回)。

numpy.nonzero(a)

參數說明:

? a:輸入數組

返回值:索引元組

(軸0索引數組, 軸1索引數組, ...)

示例 1:

idx = np.nonzero(a)

輸出:

(array([1, 3, 4]),)

說明:非零元素位置為索引 1、3、4,對應值為:3, 5, 2。

np.nonzero(a) 等價于 np.where(a != 0)。

示例 2:

idx = np.nonzero(a)

輸出:

(array([0, 1, 1]), array([1, 0, 2]))

(1,2) → 4

argwhere()

返回數組中非零元素(或布爾條件為 True 的元素)的坐標,并按“每行一個坐標”的形式組織結果。

numpy.argwhere(a)

參數說明:

? a:輸入數組(通常為布爾數組)

示例 1:

idx = np.argwhere(a)

輸出:

 [4]]

說明:每一行表示一個索引位置(非零元素的位置)。

示例 2:

idx = np.argwhere(a)

輸出:

 [1 2]]

說明:每一行表示一個坐標:(row, col)。

np.nonzero(a) 是按軸分組,np.argwhere(a) 是按元素列出坐標:

np.argwhere(a) → [[行,列], [行,列], ...]

三、集合判斷

isin()

判斷元素是否屬于指定集合。返回布爾數組。

numpy.isin(element, test_elements, assume_unique=False, invert=False)

參數說明:

? element:輸入數組

? test_elements:測試集合

? assume_unique:是否假設唯一

? invert:是否取反

示例 1:

np.isin(a, [2, 4])

輸出:

[False  True False  True]

示例 2:

idx = np.isin(a, [2, 4])

輸出:

 [False False  True]]

四、邏輯運算

以下邏輯運算相關函數支持廣播機制,可用于構造復雜條件。

logical_and()

逐元素邏輯與。返回布爾數組。

numpy.logical_and(x1, x2)

參數說明:

? x1, x2:輸入數組(可廣播)

示例:

np.logical_and(a, b)

輸出:

[ True False False]

logical_or()

逐元素邏輯或。

numpy.logical_or(x1, x2)

參數說明(同 logical_and)。

示例:

np.logical_or(a, b)

輸出:

[ True  True  True]

logical_not()

逐元素邏輯非。

numpy.logical_not(x)

參數說明:

? x:輸入數組

示例:

np.logical_not(a)

輸出:

[False  True False]

logical_xor()

逐元素邏輯異或。

numpy.logical_xor(x1, x2)

參數說明(同 logical_and)。

示例:

np.logical_xor(a, b)

輸出:

[False  True  True]

小結

NumPy 提供了一套完整的邏輯運算與條件篩選機制,其中 where() 用于通用條件選擇與索引定位,extract() 與 compress() 用于元素提取,nonzero() 與 argwhere() 用于索引獲取,isin() 用于集合判斷,而 logical_* 系列函數用于構造復雜邏輯條件。不同函數在返回結果形式、是否涉及坐標索引以及是否支持廣播方面存在差異,在實際應用中應根據數據結構與篩選需求合理選擇。

點贊有美意,贊賞是鼓勵

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
浦發集團,掀桌子了

浦發集團,掀桌子了

地產K線官方
2026-06-12 21:14:07
王傳福挖來的女人,把比亞迪賣到全球

王傳福挖來的女人,把比亞迪賣到全球

趣味萌寵的日常
2026-06-12 10:07:38
海南樂東通報“縣中醫院醫療糾紛事件”:縣衛健委介入調查

海南樂東通報“縣中醫院醫療糾紛事件”:縣衛健委介入調查

澎湃新聞
2026-06-12 18:26:30
身材太性感了!《古墓麗影》新作勞拉獲演員力挺

身材太性感了!《古墓麗影》新作勞拉獲演員力挺

3DM游戲
2026-06-12 09:09:41
大媽當母貓的面打罵4只小貓,第二天跳舞回家,推開門傻眼了

大媽當母貓的面打罵4只小貓,第二天跳舞回家,推開門傻眼了

青青會講故事
2025-08-13 11:19:50
制裁菲防長當天!日本意識到不妙:喊話俄羅斯,從中國北邊開始

制裁菲防長當天!日本意識到不妙:喊話俄羅斯,從中國北邊開始

共工之錨
2026-06-12 12:24:53
賭王三太陳婉珍究竟有多美?一組最全的老照片,帶你了解真正三太

賭王三太陳婉珍究竟有多美?一組最全的老照片,帶你了解真正三太

夢醉為紅顏一笑
2026-06-12 20:44:29
剛剛,馬斯克成全球首位萬億富翁 “我寧愿錯誤地樂觀 也不要正確地悲觀”,SpaceX上市首日開盤價大漲29%

剛剛,馬斯克成全球首位萬億富翁 “我寧愿錯誤地樂觀 也不要正確地悲觀”,SpaceX上市首日開盤價大漲29%

每日經濟新聞
2026-06-12 23:19:43
財務造假!10家A股公司退市,超25萬股東踩雷

財務造假!10家A股公司退市,超25萬股東踩雷

21世紀經濟報道
2026-06-12 18:59:56
一張圖引爆虎撲:你們歡迎她再來中國嗎?

一張圖引爆虎撲:你們歡迎她再來中國嗎?

熱搜摘要官
2026-06-12 01:17:39
膝蓋疼就只能躺著?大錯!這4個動作比吃藥還管用,越動越好得快

膝蓋疼就只能躺著?大錯!這4個動作比吃藥還管用,越動越好得快

徐孟醫生說疼痛
2026-06-12 07:00:20
開完850公里我才敢說實話:小米YU7和Model Y,真不是一個路子

開完850公里我才敢說實話:小米YU7和Model Y,真不是一個路子

小怪吃美食
2026-06-10 16:13:54
油價優惠大跌1元/升,今年漲超1.6元/升的油價,6月18日或再大跌

油價優惠大跌1元/升,今年漲超1.6元/升的油價,6月18日或再大跌

油價早知道
2026-06-13 03:08:49
前TVB女星官宣兒子出生,正式成為媽媽,嫁給富商后淡出娛樂圈

前TVB女星官宣兒子出生,正式成為媽媽,嫁給富商后淡出娛樂圈

看盡落塵花q
2026-06-13 03:34:34
斯諾克賽事戰報:中國隊3勝1負,世錦賽冠軍丁俊暉苦戰4-5

斯諾克賽事戰報:中國隊3勝1負,世錦賽冠軍丁俊暉苦戰4-5

郭揦包工頭
2026-06-13 00:40:19
電梯擁吻門后續:宋珍珍自曝19歲被強奸,直言報警無用,生死看淡

電梯擁吻門后續:宋珍珍自曝19歲被強奸,直言報警無用,生死看淡

哄動一時啊
2026-06-12 09:29:59
中方禁止入境后,不到24小時,特奧多羅說了2句話,態度很囂張

中方禁止入境后,不到24小時,特奧多羅說了2句話,態度很囂張

聚焦事件
2026-06-13 04:32:33
最新帶貨王出現了!世界杯同款拉布布銷量暴漲30倍:599元一個還限購

最新帶貨王出現了!世界杯同款拉布布銷量暴漲30倍:599元一個還限購

快科技
2026-06-12 18:02:46
中國連續取消兩場會議,歐盟外長惹怒所有人,法德討論對其削權

中國連續取消兩場會議,歐盟外長惹怒所有人,法德討論對其削權

流史歲月
2026-06-12 16:50:04
女總裁破產那天,我給爸打了個電話:我看上老板了,給點追妻基金

女總裁破產那天,我給爸打了個電話:我看上老板了,給點追妻基金

千秋文化
2026-06-09 22:53:05
2026-06-13 08:28:49
MediaTea
MediaTea
專業的數字媒體、新媒體技術
1889文章數 80關注度
往期回顧 全部

科技要聞

剛剛,人類歷史上首位萬億美元富豪誕生!

頭條要聞

47歲泰國長公主去世 70多歲泰王現繼承危機

頭條要聞

47歲泰國長公主去世 70多歲泰王現繼承危機

體育要聞

歐洲恐韓?肉德維德?

娛樂要聞

一天4個瓜,肖戰熱巴最意外

財經要聞

萬億美元順差背后,透露這些信號

汽車要聞

標配激光雷達/雙動力可選 昊鉑S600限時售17.99萬起

態度原創

手機
藝術
親子
公開課
軍事航空

手機要聞

蘋果更新iOS 26采用率,近九成iPhone已升級,但比iOS 18同期略低

藝術要聞

砸了640億,再賠160億!沙特“The Line”項目徹底涼了?

親子要聞

給孩子報個幼兒園還要工資流水?難道這就是傳說中的“因財施教”

公開課

李玫瑾:為什么性格比能力更重要?

軍事要聞

伊外長披露伊美諒解備忘錄草案部分內容

無障礙瀏覽 進入關懷版