Numpy科學計算與數據分析:Numpy布爾索引與花式索引實戰

Numpy高級索引

學習目標

通過本課程,學員將掌握Numpy中布爾索引和花式索引的使用方法,能夠靈活運用這些高級索引技術進行復雜的數據操作和處理。

相關知識點

Numpy高級索引

學習內容

1 Numpy高級索引

1.1 布爾索引

布爾索引是Numpy中一種非常強大的索引方式,它允許根據條件來選擇數組中的元素。這種索引方式不僅提高了代碼的可讀性,還極大地簡化了數據篩選的過程。在布爾索引中,通常使用一個布爾數組來作為索引,這個布爾數組的每個元素都對應著原數組中的一個元素,布爾值為True的元素會被選中,而布爾值為False的元素則不會被選中。

1.1.1 基本概念

布爾索引的基本概念是通過一個條件表達式生成一個布爾數組,然后使用這個布爾數組來索引原數組。例如,如果有一個數組a,想要選擇所有大于5的元素,可以使用a > 5生成一個布爾數組,然后使用這個布爾數組來索引a。

import numpy as np# 創建一個數組
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])# 生成布爾數組
bool_array = a > 5# 使用布爾數組索引原數組
selected_elements = a[bool_array]print(selected_elements)
1.2 多條件布爾索引

布爾索引不僅支持單個條件,還支持多個條件的組合。可以通過邏輯運算符&(與)、|(或)和~(非)來組合多個條件。例如,如果想要選擇所有大于5且小于10的元素,可以使用以下代碼:

import numpy as np# 創建一個數組
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# 生成多條件布爾數組
bool_array = (a > 5) & (a < 10)# 使用布爾數組索引原數組
selected_elements = a[bool_array]print(selected_elements)
1.3 布爾索引的應用

布爾索引在數據處理中非常有用,特別是在數據清洗和數據篩選中。例如,假設有一個包含學生考試成績的數組,想要找出所有成績大于等于60分的學生,可以使用布爾索引:

import numpy as np
# 創建一個包含學生考試成績的數組
scores = np.array([55, 65, 75, 85, 95, 45, 55, 65, 75, 85])# 生成布爾數組
passing_scores = scores >= 60# 使用布爾數組索引原數組
passing_students = scores[passing_scores]print(passing_students)
1.4 花式索引

花式索引是Numpy中另一種高級索引方式,它允許使用一個整數數組來索引另一個數組。這種索引方式非常靈活,可以用于選擇數組中的任意元素,而不僅僅是連續的元素。花式索引的一個重要特點是,它返回的是一個新數組,而不是一個視圖。

1.4.1 基本概念

花式索引的基本概念是使用一個整數數組來指定要選擇的元素的索引。例如,如果有一個數組a,想要選擇索引為1、3和5的元素,可以使用以下代碼:

import numpy as np
# 創建一個數組
a = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90, 100])# 創建一個整數數組,指定要選擇的元素的索引
index_array = np.array([1, 3, 5])# 使用整數數組索引原數組
selected_elements = a[index_array]print(selected_elements)
1.5 多維數組的花式索引

花式索引不僅適用于一維數組,還適用于多維數組。在多維數組中,可以使用多個整數數組來指定每個維度上的索引。例如,假設有一個二維數組b,想要選擇第0行的第1列和第2列的元素,以及第1行的第0列和第2列的元素,可以使用以下代碼:

import numpy as np
# 創建一個二維數組
b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 創建兩個整數數組,分別指定行索引和列索引
row_indices = np.array([0, 1])
col_indices = np.array([1, 2])# 使用整數數組索引原數組。【row_indices,col_indices】,先選行,后選列,定位到具體元素值。
selected_elements = b[row_indices, col_indices]print(selected_elements)
1.6 花式索引的應用

花式索引在數據處理中也非常有用,特別是在需要選擇不連續的元素時。例如,假設有一個包含多個城市溫度數據的二維數組,想要選擇特定城市的溫度數據,可以使用花式索引:

import numpy as np
# 創建一個包含多個城市溫度數據的二維數組
temperatures = np.array([[20, 25, 30], [22, 27, 32], [24, 29, 34]])# 創建一個整數數組,指定要選擇的城市索引。
city_indices = np.array([0, 2])# 使用整數數組索引原數組。【行(city_indices),列(無)】
selected_temperatures = temperatures[city_indices]print(selected_temperatures)
1.7 高級索引的應用場景

高級索引技術在數據科學和機器學習中有著廣泛的應用。以下是一些常見的應用場景:

1.7.1 數據清洗

在數據清洗過程中,經常需要根據某些條件來篩選數據。布爾索引和花式索引可以幫助高效地完成這些任務。例如,假設有一個包含用戶信息的數據集,想要刪除所有年齡小于18歲的用戶,可以使用布爾索引:

import numpy as np
# 創建一個包含用戶信息的數據集
users = np.array([[1, 25], [2, 17], [3, 30], [4, 16], [5, 22]])# 生成布爾數組,選擇年齡大于等于18歲的用戶
valid_users = users[users[:, 1] >= 18]print(valid_users)
1.7.2 數據分析

在數據分析中,經常需要根據某些條件來選擇數據進行分析。布爾索引和花式索引可以幫助快速地選擇所需的數據。例如,假設有一個包含股票價格的數據集,想要計算所有價格大于100的股票的平均價格,可以使用布爾索引:

import numpy as np
# 創建一個包含股票價格的數據集
stock_prices = np.array([120, 90, 150, 80, 110, 130])# 生成布爾數組,選擇價格大于100的股票
high_prices = stock_prices[stock_prices > 100]# 計算平均價格
average_price = np.mean(high_prices)print(average_price)
1.7.3 機器學習

在機器學習中,經常需要根據某些條件來選擇訓練數據或測試數據。布爾索引和花式索引可以幫助高效地完成這些任務。例如,假設有一個包含特征和標簽的數據集,想要選擇所有標簽為1的數據進行訓練,可以使用布爾索引:

import numpy as np
# 創建一個包含特征和標簽的數據集
data = np.array([[1.2, 2.3, 1], [2.1, 3.4, 0], [3.2, 4.5, 1], [4.1, 5.6, 0]])# 生成布爾數組,選擇標簽為1的數據
training_data = data[data[:, 2] == 1]print(training_data)

1. Numpy入門:數組操作與科學計算基礎
2. Numpy入門:多平臺安裝與基礎環境配置
3. Numpy數組創建與應用入門
4. Numpy數組屬性入門:形狀、維度與大小
5. Numpy數組索引與切片入門
6. Numpy數組操作入門:合并、分割與重塑
7. Numpy數學函數入門與實踐
8. Numpy數據分析基礎:統計函數應用
9. Numpy隨機數生成入門
10. Numpy線性代數基礎與實踐
11. Numpy文件操作入門:數組數據的讀取與保存
12. Numpy廣播機制入門與實踐
13. Numpy布爾索引與花式索引實戰
14. Numpy高效數據處理與優化
15. Numpy數據分析與圖像處理入門

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/94847.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/94847.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/94847.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Linux】patch補丁的生成與使用方法總結

引言 在 Linux 和開源世界中&#xff0c;patch 是一個極其強大且常用的工具。它允許開發者和系統管理員以增量方式修改文件&#xff0c;特別適用于源代碼的更新、錯誤修復、功能補丁的分發與應用。 目錄 引言 一、patch介紹 二、生成補丁文件 三、補丁文件內容解析 四、p…

雜談 001 · VScode / Copilot 25.08 更新

原文鏈接https://www.castamerego.com/blog/talk-001 2025.08.08 , VS code 發布八月更新&#xff0c;同一天 Copilot 也更新了 GPT-5, 淺體驗一下 VS code 更新 發行說明更新頁面內跳轉顯示 AI 比例頁面內跳轉 Copilot 更新 對話回溯 checkpoints頁面內跳轉進度列表頁面內…

微軟發布Project Ire項目:可自主檢測惡意軟件的人工智能系統

微軟Project Ire項目利用AI自主逆向工程并分類軟件性質微軟近日公布了Project Ire項目&#xff0c;這是一個能夠自主進行逆向工程并分類軟件性質的人工智能&#xff08;AI&#xff09;系統。該系統由大型語言模型&#xff08;LLM&#xff09;驅動&#xff0c;通過使用反編譯器等…

k8s核心組件——kubelet詳解

&#x1f680;Kubernetes 核心組件解析&#xff1a;什么是 Kubelet&#xff1f;它的作用是什么&#xff1f; 在 Kubernetes&#xff08;K8s&#xff09;集群中&#xff0c;Kubelet 是最重要的 Node 組件之一&#xff0c;它負責管理和維護 Pod 的生命周期&#xff0c;確保容器在…

C++ 部署LSTM(.onnx)

0、 背景 在工業自動化控制領域&#xff0c;預測某些變量是否關鍵。根據工廠的數據&#xff0c;訓練好模型之后&#xff0c;將其轉我通用的onnx 模型&#xff0c;并實現高效的推理。 模型訓練 import numpy as np from para import * from data_utils import MyDataset from da…

深度學習-卷積神經網絡CNN-1×1卷積層

1x1卷積核&#xff0c;又稱為網中網&#xff08;Network in Network&#xff09;&#xff1a;NIN卷積的本質是有效提取相鄰像素間的相關特征&#xff0c;而11的卷積顯然沒有此作用。它失去了卷積層的特有能力——在高度和寬度維度上&#xff0c;識別相鄰元素間相互作用的能力。…

使用 Python 異步爬蟲抓取豆瓣電影Top250排行榜

導讀 在現代網絡爬蟲開發中,面對 海量網頁數據、慢速響應的網絡接口,傳統的同步爬蟲方式已經不能滿足高效抓取需求。本文將手把手帶你構建一個 基于 aiohttp + asyncio 的異步爬蟲系統,實戰目標是抓取豆瓣電影 Top250 排行榜中的電影名稱、評分和詳情頁地址。 目錄 導讀 …

云原生開發全面解析:從核心理念到實踐挑戰與解決方案

1. 云原生開發的核心理念與定義 云原生&#xff08;Cloud Native&#xff09;是一種基于云計算環境設計和運行應用程序的方法論&#xff0c;其三大技術支柱為容器化、微服務和聲明式API。根據CNCF定義&#xff0c;云原生技術通過標準化接口和自動化管理&#xff0c;使應用具備…

WebForms 實例

WebForms 實例 引言 WebForms 是 ASP.NET 技術中的一種重要技術,它允許開發者以表單的形式創建動態網頁。本文將通過具體的實例,深入探討 WebForms 的基本概念、實現方法以及在實際項目中的應用。 WebForms 簡介 WebForms 是一種用于創建動態網頁的框架,它允許開發者以類…

Java 之 多態

一、多態 多態故名思義&#xff0c;多種狀態。比如Animal 這個類中&#xff0c;eat 方法是 公共的方法&#xff0c;但是當 People&#xff0c;Dog , Cat,繼承時&#xff0c;我們知道人要吃的是米飯&#xff0c;狗要吃的是狗糧&#xff0c;貓要吃的是貓糧。所以當不同類型的引用…

文件結構樹的├、└、─ 符號

目錄一、├、└、─符號的背景二、├、└、─ 符號的含義2.1 ├ 帶豎線的分支符號2.2 └不帶豎線的分支符號2.3 ─橫線符號三、Windows系統中生成目錄樹一、├、└、─符號的背景 我們在編程中&#xff0c;可能會經常遇到一些特殊符號├、└、─。這并非偶然&#xff0c;二十由…

微軟XBOX游戲部門大裁員

近日有報道稱&#xff0c;微軟正計劃對Xbox游戲部門進行另外一次裁員&#xff0c;影響的將是整個團隊&#xff0c;而不是特定崗位或者部門&#xff0c;大概10%至20%的Xbox團隊成員受到影響&#xff0c;這是微軟這次對Xbox業務重組的一部分。 據報道&#xff0c;微軟已經開始新…

【關于Java 8 的新特性】

問&#xff1a;“Java 8 有啥新東西&#xff1f;” 你憋了半天&#xff0c;只說出一句&#xff1a;“嗯……有 Lambda 表達式。”別慌&#xff01;Java 8 可不只是“語法糖”那么簡單。它是一次真正讓 Java 從“老派”走向“現代” 的大升級&#xff01;一、Lambda 表達式&…

《嵌入式數據結構筆記(六):二叉樹》

1. ??樹數據結構的基本定義和屬性??樹是一種重要的非線性數據結構&#xff0c;用于表示層次關系。??基本定義??&#xff1a;樹是由 n&#xff08;n ≥ 0&#xff09;個結點組成的有限集合。當 n 0 時&#xff0c;稱為空樹&#xff1b;當 n > 0 時&#xff0c;樹必須…

sqlite的sql語法與技術架構研究

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu) 參考&#xff1a;參考提示詞與豆包AI交互輸出內容。 sqlite作為最常用的本地數據庫&#xff0c;其支持的sql語法也比較全面&#xff0c;歷經了二十多年經久不衰&#xff0c;其技術架構設計也是非常優秀的。 一&#xff1a…

Javascript中的一些常見設計模式

1. 單例模式&#xff08;Singleton Pattern&#xff09; 核心思想 一個類只能有一個實例&#xff0c;并提供一個全局訪問點。 場景 全局緩存Vuex / Redux 中的 store瀏覽器中的 localStorage 管理類 示例 const Singleton (function () {let instance;function createInstance…

2025 年最佳 AI 代理:工具、框架和平臺比較

目錄 什么是 AI Agents 應用 最佳 AI Agents&#xff1a;綜合列表 LangGraph AutoGen CrewAI OpenAI Agents SDK Google Agent Development Kit (ADK) 最佳no-code和open-source AI Agents Dify AutoGPT n8n Rasa BotPress 最佳預構建企業 AI agents Devin AI …

Linux 學習 ------Linux 入門(上)

Linux 是一種自由和開放源代碼的類 Unix 操作系統。它誕生于 1991 年&#xff0c;由芬蘭程序員林納斯?托瓦茲&#xff08;Linus Torvalds&#xff09;發起并開發。與 Windows 等閉源操作系統不同&#xff0c;Linux 的源代碼是公開的&#xff0c;任何人都可以查看、修改和傳播&…

[202403-E]春日

[202403-E]春日 題目背景 春水初至&#xff0c; 文筆亦似花開。 題目描述 坐看萬紫千紅&#xff0c; 提筆洋洋灑灑&#xff0c; 便成篇文章。 現在給你這篇文章&#xff0c; 這篇文章由若干個單詞組成&#xff0c; 沒有標點符號&#xff0c; 兩兩單詞之間由一個空格隔開。 為了…

Unity筆記(三)——父子關系、坐標轉換、Input、屏幕

寫在前面寫本系列的目的(自用)是回顧已經學過的知識、記錄新學習的知識或是記錄心得理解&#xff0c;方便自己以后快速復習&#xff0c;減少遺忘。這里只有部分語法知識。九、父子關系1、獲取、設置父對象(1)獲取父對象可以通過this.transform.parent獲取當前對象的父對象Trans…