NumPy玩轉數據科學

本文在創作過程中借助 AI 工具輔助資料整理與內容優化。圖片來源網絡。

在這里插入圖片描述

文章目錄

  • 一、引言
  • 二、NumPy 概述
    • 2.1 NumPy 的定義與發展
    • 2.2 NumPy 的重要性
  • 三、NumPy 的多維數組支持
    • 3.1 多維數組的概念
    • 3.2 多維數組的創建與操作
      • 3.2.1 數組的創建
      • 3.2.2 數組的索引和切片
      • 3.2.3 數組的運算
  • 四、NumPy 作為機器學習的底層依賴
    • 4.1 數據存儲與預處理
    • 4.2 算法實現與優化
  • 五、NumPy 在不同場景下的應用案例
    • 5.1 金融風險評估中的應用
    • 5.2 醫療影像分析中的應用
  • 六、NumPy 與其他 Python 庫的協同工作
    • 6.1 與 Pandas 的協同
    • 6.2 與 Matplotlib 的協同
  • 七、結論

一、引言

大家好,我是沛哥兒。
在當今科技飛速發展的時代,人工智能和機器學習領域取得了令人矚目的成就。而在這些領域背后,有許多基礎的技術和工具發揮著至關重要的作用。NumPy 作為科學計算的基礎庫,便是其中之一。它提供的多維數組支持,不僅為科學計算提供了強大的工具,更是機器學習算法實現的底層依賴。深入了解 NumPy 的特性,對于推動技術的發展和應用具有重要的意義。

在這里插入圖片描述

二、NumPy 概述

2.1 NumPy 的定義與發展

NumPy(Numerical Python)是一個開源的 Python 庫,它為 Python 提供了高效的多維數組對象和處理這些數組的工具。NumPy 的發展歷程反映了科學計算領域對高效數據處理工具的不斷需求。最初,Python 作為一種通用的編程語言,在數據處理方面的性能存在一定的局限性。為了滿足科學計算的需要,NumPy 應運而生。經過多年的發展和完善,NumPy 已經成為 Python 科學計算生態系統中不可或缺的一部分。

2.2 NumPy 的重要性

NumPy 在科學計算和機器學習領域具有極其重要的地位。在科學計算方面,許多復雜的數學運算和數據處理任務都可以借助 NumPy 的多維數組和相關函數來高效完成。例如,在物理學、化學、生物學等領域的數值模擬和數據分析中,NumPy 能夠大大提高計算效率。在機器學習領域,NumPy 是眾多機器學習框架的底層依賴。像 TensorFlow、PyTorch 等深度學習框架,都在一定程度上依賴于 NumPy 進行數據的存儲和初步處理。可以說,NumPy 是連接高層機器學習算法和底層數據處理的橋梁。

在這里插入圖片描述

三、NumPy 的多維數組支持

3.1 多維數組的概念

多維數組是 NumPy 的核心數據結構。簡單來說,多維數組是一個由相同類型元素組成的表格,這些元素可以通過多個索引來訪問。一維數組可以看作是一個列表,二維數組類似于矩陣,而更高維的數組則可以表示更為復雜的數據結構。例如,在圖像處理中,一張彩色圖像可以用一個三維數組來表示,其中每個像素的 RGB 值可以看作是數組中的一個元素。

3.2 多維數組的創建與操作

3.2.1 數組的創建

NumPy 提供了多種創建多維數組的方法。可以使用 np.array() 函數將 Python 列表轉換為數組,也可以使用 np.zeros()np.ones() 等函數創建指定形狀和數據類型的數組。例如:

import numpy as np
# 創建一維數組
a = np.array([1, 2, 3])
# 創建二維數組
b = np.array([[1, 2, 3], [4, 5, 6]])
# 創建全零數組
c = np.zeros((3, 3))
# 創建全一數組
d = np.ones((2, 4))

3.2.2 數組的索引和切片

多維數組的索引和切片操作可以方便地訪問和修改數組中的元素。與 Python 列表類似,NumPy 數組的索引從 0 開始。對于二維數組,可以使用 array[row, column] 的方式來訪問元素。例如:

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr[0, 1])  # 輸出 2
# 切片操作
print(arr[:, 1])  # 輸出第二列 [2, 5]

3.2.3 數組的運算

NumPy 支持對多維數組進行各種數學運算。這些運算可以是元素級別的運算,也可以是矩陣運算。例如,兩個數組可以進行加法、減法、乘法等元素級別的運算,也可以使用 np.dot() 函數進行矩陣乘法。

import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
# 元素級加法
c = a + b
# 矩陣乘法
d = np.dot(a, b)

四、NumPy 作為機器學習的底層依賴

在這里插入圖片描述

4.1 數據存儲與預處理

在機器學習中,數據的存儲和預處理是非常重要的環節。NumPy 的多維數組可以高效地存儲大規模的數據,并且提供了豐富的函數來進行數據的預處理。例如,數據的歸一化、標準化等操作都可以通過 NumPy 輕松實現。

在一個機器學習項目中,

  • 首先需要將原始數據轉換為 NumPy 數組,
  • 然后對數組進行清洗、特征提取等操作,為后續的模型訓練做好準備。

4.2 算法實現與優化

許多機器學習算法的實現都依賴于 NumPy 的高效計算能力。
例如,在線性回歸算法中,需要進行矩陣運算來求解模型的參數。NumPy 的矩陣運算函數可以大大提高算法的執行效率。同時,NumPy 還支持向量化操作,避免了使用顯式循環,進一步提高了代碼的執行速度。

例如,在計算多個樣本的預測值時,可以使用向量化的方式一次性計算所有樣本的結果,而不是一個一個樣本地計算。

五、NumPy 在不同場景下的應用案例

5.1 金融風險評估中的應用

在金融領域,準確評估風險是至關重要的。NumPy 可以幫助金融分析師處理大量的歷史數據,進行復雜的風險模型計算。例如,在計算投資組合的風險價值(VaR)時,需要對多個資產的價格變動數據進行統計分析和模擬計算。

使用 NumPy 的多維數組存儲不同資產在不同時間點的價格數據,利用其強大的數學運算能力進行收益率計算、協方差矩陣計算等操作。以下是一個簡化的示例代碼:

import numpy as np# 模擬多個資產的歷史價格數據
prices = np.array([[100, 102, 101, 103, 105],[200, 203, 202, 205, 207],[300, 302, 301, 304, 306]
])# 計算每日收益率
returns = (prices[:, 1:] - prices[:, :-1]) / prices[:, :-1]# 計算協方差矩陣
cov_matrix = np.cov(returns)# 假設投資組合權重
weights = np.array([0.3, 0.4, 0.3])# 計算投資組合的方差
portfolio_variance = np.dot(weights.T, np.dot(cov_matrix, weights))# 計算風險價值(假設正態分布)
confidence_level = 0.95
z_score = 1.645  # 對應 95% 置信水平
portfolio_std_dev = np.sqrt(portfolio_variance)
VaR = z_score * portfolio_std_devprint(f"投資組合的風險價值 (VaR): {VaR}")

5.2 醫療影像分析中的應用

醫療影像(如 X 光、CT 掃描等)包含大量的數據,NumPy 在處理和分析這些數據方面發揮著重要作用。例如,在肺部疾病診斷中,可以使用 NumPy 對 CT 圖像進行預處理和特征提取。

首先,將 CT 圖像轉換為 NumPy 數組,利用其多維數組操作功能進行圖像增強、降噪等預處理操作。然后,通過計算圖像的統計特征(如均值、標準差、直方圖等)和形態學特征(如面積、周長等),為后續的疾病診斷提供依據。以下是一個簡單的示例代碼:

import numpy as np
import cv2# 讀取 CT 圖像
image = cv2.imread('lung_ct_img.jpg', cv2.IMREAD_GRAYSCALE)# 圖像增強:直方圖均衡化
enhanced_image = cv2.equalizeHist(image)# 計算圖像的均值和標準差
mean_value = np.mean(enhanced_image)
std_dev = np.std(enhanced_image)# 二值化處理
_, binary_image = cv2.threshold(enhanced_image, mean_value, 255, cv2.THRESH_BINARY)# 計算連通區域的面積
num_labels, labels, stats, centroids = cv2.connectedComponentsWithStats(binary_image, connectivity=8)
areas = stats[1:, cv2.CC_STAT_AREA]print(f"圖像均值: {mean_value}, 標準差: {std_dev}")
print(f"連通區域面積: {areas}")

六、NumPy 與其他 Python 庫的協同工作

6.1 與 Pandas 的協同

Pandas 是另一個強大的 Python 庫,主要用于數據處理和分析。它提供了 DataFrame 和 Series 等數據結構,方便進行數據的清洗、轉換和統計分析。NumPy 與 Pandas 可以很好地協同工作,Pandas 的很多底層數據存儲就是基于 NumPy 數組。

例如,在處理大規模的時間序列數據時,可以先使用 Pandas 讀取和整理數據,然后將需要進行復雜數學運算的部分轉換為 NumPy 數組進行計算,最后再將結果轉換回 Pandas 的數據結構進行進一步的分析和可視化。

import pandas as pd
import numpy as np# 創建一個 Pandas DataFrame
data = {'A': [1, 2, 3, 4, 5],'B': [6, 7, 8, 9, 10]
}
df = pd.DataFrame(data)# 將 DataFrame 的某列轉換為 NumPy 數組進行計算
column_a = df['A'].values
result = column_a * 2# 將計算結果添加回 DataFrame
df['A_multiplied'] = resultprint(df)

6.2 與 Matplotlib 的協同

Matplotlib 是 Python 中常用的繪圖庫,用于創建各種類型的可視化圖表。NumPy 數組可以作為 Matplotlib 的輸入數據,方便進行數據可視化。

例如,使用 NumPy 生成一些數據,然后使用 Matplotlib 繪制折線圖、散點圖等。

import numpy as np
import matplotlib.pyplot as plt# 生成 x 和 y 數據
x = np.linspace(0, 10, 100)
y = np.sin(x)# 繪制折線圖
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.title('正弦函數曲線')
plt.show()

在這里插入圖片描述

七、結論

綜上所述,NumPy 作為 Python 科學計算和機器學習領域的基礎庫,具有不可替代的重要地位。它的多維數組支持特性為處理復雜的數據結構提供了強大的工具,其高效的計算能力使得許多科學計算和機器學習任務得以快速實現。

通過對 NumPy 在不同場景下的應用案例分析,我們看到了它在金融、醫療等多個領域的廣泛應用前景。同時,NumPy 與其他 Python 庫(如 Pandas、Matplotlib 等)的協同工作,進一步拓展了其功能和應用范圍。

隨著人工智能和機器學習技術的不斷發展,以及數據規模和復雜度的持續增加,NumPy 也將不斷發展和完善。未來,我們期待 NumPy 能夠更好地應對大規模數據和復雜計算的挑戰,與更多的新興技術相結合,為科學研究和實際應用帶來更多的創新和突破。同時,廣大開發者也將繼續在 NumPy 的開源社區中貢獻自己的智慧和力量,推動其不斷前進。

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

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

相關文章

【uniapp小程序開發】圖表組件ucharts的使用(入門)

一、插件的安裝 安裝非常簡單,打開uniapp的插件市場,導入到項目中即可 下載地址:https://ext.dcloud.net.cn/plugin?id271 二、開始實踐 先看頁面的效果 頁面中實現了三個基本圖形的展示:折線圖、餅圖和柱狀圖。 上圖左一&a…

APISIX+etcd高可用集群部署方案詳解

#作者:任少近 文章目錄 一、背景二、部署etcd1、etcd的svc部署yaml2、Etcd 服務定義說明3、etcd的statefulset部署yaml4、Etcd 狀態集(StatefulSet)配置說明5、查看集群狀態 三、部署apisix的deployment部署1、apisix部署yaml文件2、APISIX …

Excel常用公式大全

資源寶整理分享:https://www.httple.net Excel常用公式大全可以幫助用戶提高工作效率,掌握常用的Excel公式,讓數據處理和計算工作更加便捷高效。了解公式學習方法、用途,不再死記硬背,拒絕漫無目的。 命令用途注釋說…

什么是Seata?

深入解析Seata:分布式事務的終極解決方案 什么是Seata? Seata(Simple Extensible Autonomous Transaction Architecture)是一款開源的分布式事務解決方案,由阿里巴巴中間件團隊于2019年1月發起并開源(最初…

【系統規劃與管理師第二版】1.3 新一代信息技術及發展

一、物聯網 物聯網(IoT)是指通過信息傳感設備,按約定的協議將任何物品與互聯網相連接,進行信息交換和通信,以實現智能化識別、定位、跟蹤、監控和管理的網絡。物聯網主要解決物品與物品(T2T)、人…

在Spring Boot中自定義JSON返回日期格式的指南

在開發Spring Boot應用時,很多時候需要在返回的JSON數據中以特定格式顯示日期和時間。例如,使用LocalDateTime、Date等類型的字段時,默認的序列化格式可能不是你期望的路徑。本文將介紹如何在Spring Boot中實現控制返回JSON數據的日期格式&am…

【大數據高并發核心場景實戰】 - 數據持久化之冷熱分離

大數據高并發核心場景實戰 - 數據持久化之冷熱分離 當云計算平臺的業務后臺處理工單突然接入客服系統的請求洪流,每日新增10萬工單,3000萬主表1.5億明細表的數據庫開始呻吟——是時候請出「冷熱分離」這劑退燒藥了! 一、業務場景:…

【AI Study】第四天,Pandas(6)- 性能優化

文章概要 本文詳細介紹 Pandas 的性能優化技術,包括: 內存優化計算優化大數據處理實際應用示例 內存優化 數據類型優化 # 查看數據類型 df.dtypes# 查看內存使用情況 df.memory_usage(deepTrue)# 優化數值類型 # 將 float64 轉換為 float32 df[floa…

c++系列之智能指針的使用

💗 💗 博客:小怡同學 💗 💗 個人簡介:編程小萌新 💗 💗 如果博客對大家有用的話,請點贊關注再收藏 🌞 智能指針的使用及原理 AII(Resource Acquisition Is Initializatio…

知識蒸餾(Knowledge Distillation, KD)

知識蒸餾(Knowledge Distillation, KD)是一種模型壓縮與知識遷移技術,通過讓小型學生模型(Student)模仿大型教師模型(Teacher)的行為(如輸出概率分布或中間特征表示)&…

chatGPT 會擴大失業潮嗎?

擊上方關注 “終端研發部” 設為“星標”,和你一起掌握更多數據庫知識 對于部分人而言,失業是必然趨勢。 這不,身后的一測試大哥,自從公司解散之后,已經在家待業半年了。。。 自打OpenAI推出了chatGPT3.0之后&#xff…

FPGA基礎 -- Verilog行為級建模之時序控制

Verilog 行為級建模(Behavioral Modeling)中“時序控制”機制的系統化由淺入深培訓內容,適用于初學者到進階 FPGA 設計工程師的學習路徑。 🎯 一、行為級建模的定位 行為級建模(Behavioral Modeling)是 Ve…

設計模式精講 Day 7:橋接模式(Bridge Pattern)

【設計模式精講 Day 7】橋接模式(Bridge Pattern) 文章簡述 在軟件系統中,類的繼承關系往往會導致類爆炸,尤其是在需要組合多種功能或行為時。橋接模式(Bridge Pattern)通過將抽象部分與其實現部分分離&am…

Apipost 簽約銳捷網絡:AI賦能,共推 ICT 領域 API 生態智能化升級

日前,北京北極狐信息科技有限公司(簡稱 “北極狐科技”)與銳捷網絡股份有限公司(簡稱 “銳捷網絡”)正式簽署合作協議,雙方將聚焦 ICT 基礎設施及解決方案領域,圍繞 API 全鏈路管理與智能化研發…

RK3568筆記八十三:RTMP推流H264和PCM

若該文為原創文章,轉載請注明原文出處。 前面有通過勇哥,實現了RTMP推流,但一直想加上音頻,所以經過測試,寫了一個demo, ffmpeg是使用ubuntu下安裝測試的。 安裝參考:Ubuntu20.4下x264、x265、fdk-aac和FFmpeg4.3源碼編譯安裝_ubuntu安裝libx264-CSDN博客 記錄:實現從…

產業園智慧化升級中 DDC 樓宇自控系統的集成應用優勢:多業態協同與能源可視化管控?

摘要? 在產業園智慧化升級浪潮中,直接數字控制(DDC)系統憑借強大的集成能力,成為實現多業態協同與能源可視化管控的核心技術。本文深入剖析 DDC 系統在整合園區多元業態、優化能源管理方面的獨特優勢,通過系統集成打…

Vue 3瀑布流組件實現詳解 - 圖片展示方案

引言:瀑布流布局的魅力與應用場景 在當今富媒體內容主導的網絡環境中,瀑布流布局已成為展示圖片商品等內容的流行方式。它通過動態布局算法在有限空間內最大化內容展示,提供視覺連續性和流暢瀏覽體驗。本文將深入探討如何使用Vue 3實現一個功…

如何確保郵件內容符合反垃圾郵件規范?

一、遵守相關法規 美國《CAN-SPAM法案》規定,郵件頭信息必須真實準確,要標明廣告性質、提供有效地址,并在 10 個工作日內響應退訂請求。 歐盟《通用數據保護條例》(GDPR)強調獲得用戶明確同意,數據使用要…

MQ解決高并發下訂單問題,實現流量削峰

文章目錄 示例:電商秒殺系統中的流量削峰1. 依賴引入(Maven)2. 消息隊列配置(RabbitMQ)3. 生產者:訂單服務(接收高并發請求)4. 消費者:庫存服務(按系統容量處…