Numpy科學計算(五分鐘小白從入門到精通)

2.1 ?numpy介紹

numpy是Python中科學計算的基礎包。它是一個Python庫,提供多維數組對象、各種派生對象(例如掩碼數組和矩陣)以及用于對數組進行快速操作的各種方法,包括數學、邏輯、形狀操作、排序、選擇、I/O 、離散傅里葉變換、基本線性代數、基本統計運算、隨機模擬等等。

numpy的部分功能如下:

  • ndarray,一個具有矢量算術運算和復雜廣播能力的快速且節省空間的多維數組。
  • 用于對整組數據進行快速運算的標準數學函數(無需編寫循環)。
  • 用于讀寫磁盤數據的工具以及用于操作內存映射文件的工具。
  • 線性代數、隨機數生成以及傅里葉變換功能。
  • 用于集成由C、C++、Fortran等語言編寫的代碼的API。

為什么需要Numpy

Python
# 原生Python列表?vs NumPy數組性能對比
import time
import numpy as np

py_list = list(range(1000000))
np_arr = np.arange(1000000)

# 計算平方和
start = time.time()
sum([x**2 for x in py_list])
print(f"Python列表耗時: {time.time()-start:.4f}s")

start = time.time()
np.sum(np_arr**2)
print(f"NumPy數組耗時: {time.time()-start:.4f}s")

輸出示例

Plain Text
Python列表耗時: 0.1256s ?
NumPy數組耗時: 0.0023s

安裝numpy包

如果在Pycharm中加載不出來,可以通過如下命令安裝

Python
C:\Users\fuxiaofeng>conda activate python-2025-conda
(python-2025-conda) C:\Users\fuxiaofeng>conda install numpy

2.1 ?numpy介紹

numpy是Python中科學計算的基礎包。它是一個Python庫,提供多維數組對象、各種派生對象(例如掩碼數組和矩陣)以及用于對數組進行快速操作的各種方法,包括數學、邏輯、形狀操作、排序、選擇、I/O 、離散傅里葉變換、基本線性代數、基本統計運算、隨機模擬等等。

numpy的部分功能如下:

  • ndarray,一個具有矢量算術運算和復雜廣播能力的快速且節省空間的多維數組。
  • 用于對整組數據進行快速運算的標準數學函數(無需編寫循環)。
  • 用于讀寫磁盤數據的工具以及用于操作內存映射文件的工具。
  • 線性代數、隨機數生成以及傅里葉變換功能。
  • 用于集成由C、C++、Fortran等語言編寫的代碼的API。

為什么需要Numpy

Python
# 原生Python列表?vs NumPy數組性能對比
import time
import numpy as np

py_list = list(range(1000000))
np_arr = np.arange(1000000)

# 計算平方和
start = time.time()
sum([x**2 for x in py_list])
print(f"Python列表耗時: {time.time()-start:.4f}s")

start = time.time()
np.sum(np_arr**2)
print(f"NumPy數組耗時: {time.time()-start:.4f}s")

輸出示例

Plain Text
Python列表耗時: 0.1256s ?
NumPy數組耗時: 0.0023s

安裝numpy

如果在Pycharm中加載不出來,可以通過如下命令安裝

Python
C:\Users\fuxiaofeng>conda activate python-2025-conda
(python-2025-conda) C:\Users\fuxiaofeng>conda install numpy

2.1 ?numpy介紹

numpy是Python中科學計算的基礎包。它是一個Python庫,提供多維數組對象、各種派生對象(例如掩碼數組和矩陣)以及用于對數組進行快速操作的各種方法,包括數學、邏輯、形狀操作、排序、選擇、I/O 、離散傅里葉變換、基本線性代數、基本統計運算、隨機模擬等等。

numpy的部分功能如下:

  • ndarray,一個具有矢量算術運算和復雜廣播能力的快速且節省空間的多維數組。
  • 用于對整組數據進行快速運算的標準數學函數(無需編寫循環)。
  • 用于讀寫磁盤數據的工具以及用于操作內存映射文件的工具。
  • 線性代數、隨機數生成以及傅里葉變換功能。
  • 用于集成由C、C++、Fortran等語言編寫的代碼的API。

為什么需要Numpy

Python
# 原生Python列表?vs NumPy數組性能對比
import time
import numpy as np

py_list = list(range(1000000))
np_arr = np.arange(1000000)

# 計算平方和
start = time.time()
sum([x**2 for x in py_list])
print(f"Python列表耗時: {time.time()-start:.4f}s")

start = time.time()
np.sum(np_arr**2)
print(f"NumPy數組耗時: {time.time()-start:.4f}s")

輸出示例

Plain Text
Python列表耗時: 0.1256s ?
NumPy數組耗時: 0.0023

darray

2.2.1 ndarray 的核心特性

  1. 多維性:支持?0 維(標量)、1 維(向量)、2 維(矩陣)及更高維數組。
  1. 同質性:所有元素類型必須一致(通過?dtype?指定)。
  1. 高效性:基于連續內存塊存儲,支持向量化運算。

2.2.2 ?ndarray的屬性

核心屬性(必須掌握)

(假設?arr = np.array([[1, 2], [3, 4]])

屬性名稱

通俗解釋

使用示例

輸出結果

實際用途

shape

數組的形狀:行數和列數(或更高維度的尺寸)。

arr.shape

(2, 2)

查看或調整數組結構(如變形)。

ndim

維度數量:數組是幾維的(1維、2維、3維等)。

arr.ndim

2

判斷數組是向量、矩陣還是高維數據。

size

總元素個數:數組中所有元素的總數。

arr.size

4

快速計算元素總量。

dtype

元素類型:數組中元素的類型(整數、浮點數等)。

arr.dtype

int64(或?int32

確保計算時類型一致(如避免整數除法問題)。

  1. shape:就像問數組“長什么樣”。
  • 示例:arr = np.array([[1, 2], [3, 4]])?的?shape?是?(2, 2),表示2行2列。
  • 變形操作arr.reshape(4, 1)?會變成4行1列的數組。
  1. ndim:判斷數組是“幾維空間”。
  • 一維數組(向量):ndim=1,如?[1, 2, 3]
  • 二維數組(矩陣):ndim=2,如表格數據。
  • 三維數組(立體):ndim=3,如RGB圖片數據。
  1. dtype:確保所有元素是“同一類型”。
  • 如果數組中有小數,dtype?會自動變成?float64(避免精度丟失)。
  • 強制指定類型:np.array([1, 2], dtype=np.float32)

Python
import numpy as np

# 創建一個3x2的二維數組
arr = np.array([[1, 2], [3, 4], [5, 6]])

print("形狀?shape:", arr.shape) ???# 輸出?(3, 2)
print("維度?ndim:", arr.ndim) ????# 輸出?2
print("總元素?size:", arr.size) ??# 輸出?6
print("元素類型?dtype:", arr.dtype) ?# 輸出?int64

進階屬性(了解即可)

屬性名稱

通俗解釋

示例代碼

輸出結果

應用場景

T

轉置:行變列,列變行。

arr.T

[[1, 3], [2, 4]]

矩陣運算(如矩陣乘法)。

itemsize

單個元素占用的內存字節數

arr.itemsize

8int64?類型占8字節)

優化內存占用時參考。

nbytes

數組總內存占用量size * itemsize

arr.nbytes

32(4元素?× 8字節)

處理大數據時監控內存消耗。

flags

內存存儲方式:是否連續存儲(高級優化)。

arr.flags

C_CONTIGUOUS : True?等

高性能計算或底層內存操作。

練習題

題目?1:觀察數組形狀

Python
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])

  1. arr.shape?的輸出是什么???
  1. arr.ndim?的值是多少???
  1. arr.size?的結果是什么?

答案??

  1. (2, 3)??
  1. 2(二維數組)??
  1. 6(總元素數:2行×3列=6)

題目?2:數據類型推斷

以下數組的?dtype?分別是什么?

  1. np.array([1, 2, 3])??
  1. np.array([1.0, 2, 3])??
  1. np.array(["apple", "banana"])??

答案??

  1. int64(默認整數類型)??
  1. float64(包含浮點數,自動提升為浮點類型)??
  1. <U6(Unicode 字符串,長度?6)

題目?3:內存占用計算

Python
arr = np.array([[0, 1], [2, 3]], dtype=np.int32)

  1. arr.itemsize?的值是多少???
  1. arr.nbytes?的結果是多少???

答案??

  1. 4int32?類型占?4 字節)??
  1. 8(總字節數:4元素×4字節=16 → 注:原題應為?4 元素?需要檢查數組大小)

(更正:數組是?2x2,共?4 元素。nbytes = 4 × 4 = 16,原題可能有誤)

題目?4:轉置操作

Python
arr = np.array([[1, 2], [3, 4], [5, 6]])

  1. 寫出?arr.T?的輸出。??
  1. 轉置后的?shape?是什么?

答案??

Plain Text
[[1 3 5]
[2 4 6]]

(2, 3)(原數組是?3x2,轉置后為?2x3)。

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

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

相關文章

從零掌握微服務通信安全:mTLS全解析

&#x1f525;「炎碼工坊」技術彈藥已裝填&#xff01; 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 在云原生時代&#xff0c;微服務架構的普及帶來了靈活性和可擴展性&#xff0c;但也讓服務間通信的安全性成為核心挑戰。mTLS&#xff08;Mutual TLS&…

Node.js net.Socket.destroy()深入解析

socket.destroy() 是 Node.js net 模塊中用于強制銷毀 TCP 套接字的方法&#xff0c;比 socket.end() 更徹底。下面我將從多個方面全面講解這個方法。 基本用法 const net require(net);const server net.createServer((socket) > {// 強制銷毀套接字socket.destroy(); })…

vmware 克隆虛擬機,報錯:克隆時出錯:指定不存在的設備。然后電腦卡死,只能強制關機再開機。

vmware 克隆虛擬機&#xff0c;報錯&#xff1a;克隆時出錯:指定不存在的設備。然后電腦卡死&#xff0c;只能強制關機再開機。1、問題描述2、問題原因3、解決方法1、問題描述 vmware 版本&#xff1a;vmware workstation pro 17.6.3 克隆虛擬機時&#xff0c;創建完整克隆&am…

如何使用Python將任意PPT變為“智能模板”(解決 python-pptx 替換元素無法保留格式的問題,陰影、填充等屬性保留!)

文章目錄 ?? 介紹 ?? ?? 演示環境 ?? ?? 深入 OpenXML:格式保留的終極武器 ?? ?? 如何打造你自己的“格式保留”PPT模板? ?? 為什么格式會丟失? ??? 方案一:圖片的“格式移植”大法 ??? 實現代碼 ?? 原理解析 ?? 方案二:文本的“外科手術”大法…

學習python中離線安裝pip及下載package的方法

正常而言&#xff0c;Python 3.4及以上版本默認自帶pip工具?&#xff0c;無需額外安裝&#xff0c;如果需要單獨離線安裝pip&#xff0c;可以先使用DeepSeek查看指定操作系統能安裝的最高pip版本&#xff0c;然后在參考文獻1中現在指定版本的pip離線安裝文件&#xff0c;通常為…

liunx運維進階腳本

一、文件與目錄操作1.快速創建目錄樹mkdir -p project/{src,doc,test/{unit,integration}}創建嵌套目錄結構&#xff0c;避免逐層創建。2查找并刪除7天前的日志文件find /var/log -name "*.log" -mtime 7 -exec rm -f {} \;結合find和exec實現定時清理。3.批量重命名…

Apache Ignite 中的 SQL 模式(Schema)管理機制

這段內容講的是 Apache Ignite 中的 SQL 模式&#xff08;Schema&#xff09;管理機制。我們可以從幾個方面來理解&#xff1a; 一、什么是 Schema&#xff08;模式&#xff09;&#xff1f; 在 SQL 中&#xff0c;Schema 是數據庫對象&#xff08;如表、視圖等&#xff09;的…

分布式光伏發電多合一(也稱為五合一或者群調群控)終端,從功能、市場前景等等方面介紹

對于當下分布式光伏從業者&#xff0c;多合一終端經常被提及到。而且很多地區也有正常使用&#xff0c;目前來看&#xff0c;使用效果也是比較好的&#xff0c;滿足當下的使用要求。并且價格也是可以接受。下面從幾個方面簡單介紹一下。功能介紹 5G通信功能 設備內置 5G通信模組…

AWE2026啟動:加碼AI科技,雙展區聯動開啟產業新格局

7月22日&#xff0c;由中國家用電器協會主辦的2026年中國家電及消費電子博覽會&#xff08;AWE2026&#xff09;啟動發布會在上海舉行。據「TMT星球」了解&#xff0c;AWE2026將以“AI科技、慧享未來”為主題&#xff0c;首次啟用“一展雙區”的新模式&#xff0c;于2026年3月1…

Django基礎(六)———數據庫

前言上篇文章給大家介紹了DTL模板結構這篇文章將講述Django框架與MySQL數據庫的綜合使用一、Django配置連接數據庫在操作數據庫之前&#xff0c;首先先要連接數據庫&#xff0c;這里我們以配置MySQL為例來講解。Diango連接數據庫&#xff0c;不需要單獨的創建一個連接對象。 只…

postgresql使用記錄 SCRAM authentication requires libpq version 10 or above

文章目錄 背景 如何用命令行連接數據庫 報錯 原因 解決方案 psql常見命令 ?? **核心數據庫操作命令** 1. **查看所有數據庫** 2. **切換數據庫** 3. **查看表及結構** 4. **執行 SQL 文件** 5. **退出 psql** ?? **高級管理命令** ? **注意事項** 背景 由于某種原因,無法…

2.0版本seata、nacos+ruoyi(微服務)配置

一、下載&#xff1a; seata下載&#xff1a;點擊這里 nacos下載&#xff1a;點擊這里 ruoyi&#xff08;微服務&#xff09;下載&#xff1a;點擊這里 Git bash下載&#xff1a;點擊這里 本文所用的版本&#xff1a; seata-2.2.0&#xff08;下圖紅色框框&#xff09;&a…

面試高頻題 力扣 LCR 130.衣柜整理 洪水灌溉(FloodFill) 深度優先遍歷(dfs) 暴力搜索 C++解題思路 每日一題

目錄零、題目描述一、為什么這道題值得一看&#xff1f;二、題目拆解&#xff1a;核心要素與約束三、算法實現&#xff1a;基于 DFS 的解決方案代碼邏輯拆解五、時間復雜度與空間復雜度時間復雜度空間復雜度六、坑點總結七、舉一反三八、洪水灌溉&#xff08;Flood Fill&#x…

Ext4文件系統全景解析

目錄Ext4文件系統全景解析&#xff1a;從inode到數據恢復實戰1. Ext文件系統的"小區規劃"&#xff1a;塊組結構詳解 &#x1f3d8;?1.1 塊組&#xff1a;文件系統的基本管理單元1.2 超級塊的"多重備份"機制 &#x1f6e1;?2. inode&#xff1a;文件的&qu…

貪心算法Day4學習心得

先來看第一道&#xff1a;860. 檸檬水找零 - 力扣&#xff08;LeetCode&#xff09; 有如下三種情況&#xff1a; 情況一&#xff1a;賬單是5&#xff0c;直接收下。情況二&#xff1a;賬單是10&#xff0c;消耗一個5&#xff0c;增加一個10情況三&#xff1a;賬單是20&#…

接口自動化測試種涉及到接口依賴怎么辦?

《接口自動化測試中接口依賴的處理方式及選擇原則》在接口自動化測試中&#xff0c;接口依賴是指某個接口的請求參數、執行條件或測試結果依賴于其他接口的輸出&#xff08;如返回數據、狀態等&#xff09;。處理接口依賴是確保測試用例準確性和穩定性的關鍵&#xff0c;常見的…

hive分區表臨時加載日批數據文件

源系統每日上傳一個csv數據文件到數據中臺指定目錄&#xff0c;數據中臺用hive表進行ETL工作。 先建一個外部分區表&#xff1a; create external table tmp_lease_contract ( contract_id string, vin string, amount float ) partitioned by (dt string) row format delim…

Python關于pandas的基礎知識

一.掃盲&#xff08;一&#xff09;、pandas 是什么pandas 是 Python 的一個第三方數據處理庫&#xff0c;它提供了高效、靈活的數據結構&#xff08;如 Series 和 DataFrame&#xff09;&#xff0c;能方便地對結構化數據進行清洗、轉換、分析和處理。&#xff08;二&#xff…

React 英語單詞補全游戲——一個寓教于樂的英語單詞記憶游戲

預覽&#xff1a;英語單詞補全 &#x1f4d6; 產品概述 英語單詞大冒險是一款專為 7-12 歲兒童設計的互動式英語學習游戲。通過聽音頻、補全單詞的游戲方式&#xff0c;讓孩子在輕松愉快的環境中提升英語詞匯能力和聽力水平。 &#x1f3af; 核心價值主張 寓教于樂: 將枯燥…

我的第一個開源項目 -- 實時語音識別工具

這是我的第一個開源項目&#xff0c;是我一直想做的一個小工具&#xff1a; 端到端實時語音轉文字系統。 通過小程序和H5頁面&#xff0c;用戶可以實時采錄音頻&#xff0c;通過ws上傳到java的netty server。 Java在經過權限驗證、流量控制等操作之后&#xff0c;通過gRPC流…