Numpy科學計算與數據分析:Numpy數據分析與圖像處理入門

Numpy實戰:從數據分析到圖像處理

學習目標

通過本課程,學員將學會運用Numpy庫進行數據分析和圖像處理。學習如何使用Numpy進行數據的高效處理,以及如何利用Numpy進行基本的圖像操作。

相關知識點

Numpy的數據分析和圖像處理

學習內容

1Numpy的數據分析和圖像處理

1.1 Numpy數組的創建與操作

Numpy是Python中用于科學計算的基礎庫,它提供了一個強大的多維數組對象ndarray,以及用于處理這些數組的工具。Numpy數組與Python內置的列表相比,具有更高的效率和更多的功能,特別是在處理大型數據集時。

1.1.1 創建Numpy數組

Numpy數組可以通過多種方式創建,最常見的是使用numpy.array()函數。這個函數接受一個列表(或列表的列表)作為輸入,并返回一個Numpy數組。

import numpy as np# 創建一維數組
a = np.array([1, 2, 3, 4, 5])
print(a)# 創建二維數組
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b)
1.1.2 數組的基本屬性

Numpy數組有多個屬性,可以了解數組的結構和內容。這些屬性包括ndim(數組的維度)、shape(數組的形狀)、size(數組中元素的總數)和dtype(數組中元素的數據類型)。

import numpy as np# 創建一維數組
a = np.array([1, 2, 3, 4, 5])
# 創建二維數組
b = np.array([[1, 2, 3], [4, 5, 6]])# 查看數組的屬性
print("a的維度:", a.ndim)
print("a的形狀:", a.shape)
print("a的大小:", a.size)
print("a的數據類型:", a.dtype)print("b的維度:", b.ndim)
print("b的形狀:", b.shape)
print("b的大小:", b.size)
print("b的數據類型:", b.dtype)
1.1.3 數組的索引和切片

Numpy數組支持類似于Python列表的索引和切片操作,但功能更加強大。可以使用單個索引、多個索引或切片來訪問數組中的元素。

import numpy as np
# 創建一維數組
a = np.array([1, 2, 3, 4, 5])
# 創建二維數組
b = np.array([[1, 2, 3], [4, 5, 6]])# 一維數組的索引和切片
print("a的第一個元素:", a[0])
print("a的前三個元素:", a[:3])# 二維數組的索引和切片
print("b的第一行:", b[0, :])
print("b的前兩行:", b[:2, :])
print("b的第一列:", b[:, 0])
1.2 數據分析中的Numpy應用

Numpy在數據分析中有著廣泛的應用,特別是在處理大型數據集時。Numpy提供了許多用于數據操作和統計分析的函數,使得數據處理變得更加高效和便捷。

1.2.1 數據生成

在數據分析中,經常需要生成一些隨機數據來進行測試或模擬。Numpy提供了多種生成隨機數據的方法。

import numpy as np# 生成隨機數據
random_data = np.random.rand(10)  # 生成10個0到1之間的隨機數
print("隨機數據:", random_data)# 生成正態分布數據
normal_data = np.random.normal(0, 1, 10)  # 生成10個均值為0,標準差為1的正態分布數據
print("正態分布數據:", normal_data)
1.2.2 數據操作

Numpy提供了豐富的數組操作函數,如求和、求平均值、排序等。

import numpy as np
# 求和
sum_data = np.sum(random_data)
print("隨機數據的和:", sum_data)# 求平均值
mean_data = np.mean(random_data)
print("隨機數據的平均值:", mean_data)# 排序
sorted_data = np.sort(random_data)
print("隨機數據的排序:", sorted_data)
1.2.3 數據篩選

在數據分析中,經常需要根據某些條件篩選數據。Numpy提供了布爾索引功能,可以方便地進行數據篩選。

import numpy as np
# 布爾索引
filtered_data = random_data[random_data > 0.5]
print("大于0.5的隨機數據:", filtered_data)
1.3 圖像處理中的Numpy應用

Numpy在圖像處理中也有廣泛的應用。圖像可以被視為一個二維或三維的數組,其中每個元素代表一個像素的值。Numpy提供了許多用于圖像處理的函數,使得圖像處理變得更加簡單和高效。

1.3.1 讀取和顯示圖像

首先,需要使用wget的方式進行數據的下載,下載完成后讀取圖像并將其轉換為Numpy數組。可以使用PIL庫來讀取圖像。

!wget --no-check-certificate https://model-community-picture.obs.cn-north-4.myhuaweicloud.com/ascend-zone/notebook_datasets/f11284f42ed511f0a34cfa163edcddae/example.png
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt# 讀取圖像
image = Image.open('example.png')
image_array = np.array(image)# 顯示圖像
plt.imshow(image_array)
plt.axis('off')
plt.show()
1.3.2 圖像的基本操作

Numpy數組可以用于對圖像進行基本操作,如裁剪、翻轉和旋轉。

import numpy as np
# 裁剪圖像
cropped_image = image_array[100:300, 100:300, :]
plt.imshow(cropped_image)
plt.axis('off')
plt.show()# 翻轉圖像
flipped_image = np.flip(image_array, axis=0)
plt.imshow(flipped_image)
plt.axis('off')
plt.show()# 旋轉圖像
rotated_image = np.rot90(image_array, k=1)
plt.imshow(rotated_image)
plt.axis('off')
plt.show()
1.3.3 圖像的像素操作

Numpy數組可以用于對圖像的像素進行操作,如調整亮度和對比度。

import numpy as np
# 調整亮度
brightened_image = image_array + 50
brightened_image = np.clip(brightened_image, 0, 255)  # 確保像素值在0到255之間
plt.imshow(brightened_image)
plt.axis('off')
plt.show()# 調整對比度
contrast_image = 1.5 * (image_array - 50) + 50
contrast_image = np.clip(contrast_image, 0, 255)  # 確保像素值在0到255之間
contrast_image_normalized = contrast_image / 255.0  # 歸一化到 [0, 1]plt.imshow(contrast_image_normalized)
plt.axis('off')
plt.show()

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/pingmian/92272.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92272.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92272.shtml

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

相關文章

Vue框架總結案例

目錄 一、驗證用戶名是否已經被注冊過 二、過濾器 三、圖書管理系統 四、axios網絡請求 一、驗證用戶名是否已經被注冊過 1.案例 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><script src"j…

hyper-v虛擬機啟動失敗:Virtual Pci Express Port無法打開電源,因為發生錯誤,找不到即插即用設備

啟動錯誤 今天啟動某個hyper-v虛擬機時&#xff0c;啟動失敗了&#xff0c;大概的錯誤信息為&#xff1a;嘗試更改“ubuntu_desktop_2204”的狀態時應用程序遇到錯誤。Virtual Pci Express Port (實例 ID 0445948B-C377-4912-AEEB-58A3D45C5694): 無法開機&#xff0c;因…

CSS包含塊與百分比取值機制完全指南

引言&#xff1a;為什么需要理解包含塊&#xff1f; 在CSS布局的世界中&#xff0c;包含塊(Containing Block) 是一個基礎但至關重要的概念。它就像是一個隱形的參考框架&#xff0c;決定了元素如何定位、尺寸如何計算以及百分比值如何解析。許多CSS開發者在使用百分比單位時遇…

Numpy科學計算與數據分析:Numpy數組操作入門:合并、分割與重塑

Numpy數組操作實戰 學習目標 通過本課程的學習&#xff0c;學員將掌握Numpy中數組的基本操作&#xff0c;包括數組的合并、分割以及重塑等技巧&#xff0c;能夠靈活運用這些操作處理數據&#xff0c;為后續的科學計算和數據分析打下堅實的基礎。 相關知識點 Numpy數組操作 …

11_Mybatis 是如何進行DO類和數據庫字段的映射的?

11_Mybatis 是如何進行DO類和數據庫字段的映射的&#xff1f; 假設 VideoAbnormalContentMapper.xml 文件有如下方法&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN&quo…

2025年滲透測試面試題總結-06(題目+回答)

安全領域各種資源&#xff0c;學習文檔&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具&#xff0c;歡迎關注。 目錄 邏輯漏洞 一、三大高危業務邏輯漏洞及修復方案 1. 訂單金額篡改&#xff08;參數操縱&#xff09; 2. 重…

SpringBoot激活指定profile的方式

題目詳細答案在 Spring Boot 中&#xff0c;可以通過多種方式激活指定的 Profile&#xff0c;以便在不同的環境中使用不同的配置。在application.properties文件中激活可以在默認的application.properties文件中通過spring.profiles.active屬性激活某個 Profile。# application…

Pytest項目_day10(接口的參數傳遞)

接口的參數傳遞 如果我們需要在一個測試用例中使用另一個測試用例中獲得的數據&#xff0c;應該怎么辦&#xff1f; 解決方案一&#xff1a;使用函數返回值 - 我們可以在另一個測試用例中使用return來返回所需的數據&#xff0c;并在其他的測試用例中調用該測試用例&#xff08…

深信服GO面試題及參考答案(上)

Go 和 Java 的特點和區別是什么? Go 和 Java 都是靜態類型、編譯型語言,但在設計理念、語法特性、并發模型等方面存在顯著差異,具體如下: 從語言設計目標來看,Go 由 Google 開發,旨在解決大型系統開發中的復雜性,強調“簡單、高效、并發”,語法簡潔,摒棄了許多傳統面向…

BGP筆記及綜合實驗

BGP基礎一、BGP產生背景 - BGP定義&#xff1a;邊界網關協議&#xff08;BGP&#xff09;是自治系統間的動態路由協議&#xff0c;屬于外部網關協議&#xff08;EGP&#xff09;。 - 自治系統&#xff08;AS&#xff09;&#xff1a;由統一管理、運行同一IGP協議的路由器組成&a…

全棧:如何判斷自己應該下載哪個版本的Tomcat

版本兼容性矩陣 https://tomcat.apache.org/whichversion.html https://tomcat.apache.org/download-11.cgi 介紹一下這些版本的不同點&#xff1a; 一、按系統選&#xff08;優先看這個&#xff09; 1.Windows 系統&#xff08;普通使用&#xff0c;非服務自啟&#xff09…

Redis的Linux安裝

可以直接命令下載 wget http://download.redis.io/releases/redis-5.0.4.tar.gz下載好之后解壓縮&#xff0c;并且重命名為redis 由于redis是c語言編寫的&#xff0c;所以我們需要先安裝gcc&#xff0c;安裝的命令如下&#xff1a;yum -y install gcc 安裝成功后輸入 : gcc -v…

14-netty基礎-手寫rpc-提供方(服務端)-06

netty系列文章&#xff1a; 01-netty基礎-socket02-netty基礎-java四種IO模型03-netty基礎-多路復用select、poll、epoll04-netty基礎-Reactor三種模型05-netty基礎-ByteBuf數據結構06-netty基礎-編碼解碼07-netty基礎-自定義編解碼器08-netty基礎-自定義序列化和反序列化09-n…

連續時間和數字之間頻率的偏差以及相位補償

接下來需要講解在連續時間域下的角頻率以及在離散化后的數字角頻率。上面可以知道模擬角頻率和數字的區別 接下來介紹相位 相位單位是弧度無頻偏&#xff1a; 對于數字來說是對連續信號采樣后的結果&#xff0c;數字的角頻率 &#xff0c;就是相位的遞增量&#xff0c;表示每個…

《Git從入門到精通:告別版本管理混亂》

堅持用 清晰易懂的圖解 代碼語言&#xff0c;讓每個知識點變得簡單&#xff01; &#x1f680;呆頭個人主頁詳情 &#x1f331; 呆頭個人Gitee代碼倉庫 &#x1f4cc; 呆頭詳細專欄系列 座右銘&#xff1a; “不患無位&#xff0c;患所以立。” 《Git從入門到精通&#xff1a…

小紅書開源多模態視覺語言模型DOTS-VLM1

項目簡介與模型基本介紹 DOTS-VLM1 是由小紅書希實驗室(Rednote HiLab)開源的多模態視覺語言模型(Vision-Language Model, VLM),旨在推動視覺與語言理解的融合研究。DOTS-VLM1 采用主流的編碼-融合-解碼架構,支持圖片與文本的聯合理解與生成,適用于圖文問答、圖片描述、…

【Git】企業級使用

&#x1f525;個人主頁&#xff1a; 中草藥 &#x1f525;專欄&#xff1a;【中間件】企業級中間件剖析 基本概念 Git 有三個核心區域&#xff0c;分別是工作區、暫存區和版本庫&#xff0c;理解這三個區域是掌握 Git 的基礎。? ? 工作區就是我們電腦里能看到的文件目錄&…

Druid學習筆記 02、快速使用Druid的SqlParser解析

文章目錄前言本章節源碼描述認識作者官方文檔快速入門demo案例引入依賴獲取到SQL的AST(抽象語法樹)使用visitor完成表、字段、表達式解析匯總總結一、簡介1.1、和Antlr生成Parser的區別1.2、Druid SQL Parser的使用場景二、各種語法支持三、性能四、Druid SQL Parser的代碼結構…

時間復雜度計算(以for循環為例)

本文理論內容來自嚴蔚敏版《數據結構(C語言版 第2版)》 *本文僅為復習時的總結&#xff0c;描述不準確、過程不嚴謹之處&#xff0c;還請理解 一、算法的相關概念 首先復習一下算法的定義及5個重要特性 其次是算法的評價標準 可以看到 時間復雜度 屬于算法評價標準中的高效性…

圖論(1):圖數據結構

目錄 一、圖的定義 1.1 圖的基本概念 1.2 圖的分類 &#xff08;1&#xff09;按邊的方向&#xff1a; &#xff08;2&#xff09;按邊的權值&#xff1a; &#xff08;3&#xff09;按邊的數量和類型&#xff1a; &#xff08;4&#xff09;按連通性&#xff1a; 1.3 圖…