Numpy 庫 矩陣數學運算,點積,文件讀取和保存等

目錄

1.數組(矩陣)的組合

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

2.數組(矩陣)的切割

3.數組的數學運算

4.數組的深拷貝和淺拷貝

5.隨機模塊

6.矩陣統計運算

7.矩陣的特有運算點積,求逆

8.文件讀取和保存


1.數組(矩陣)的組合

  • 水平組合(hstack)和垂直組合(vstack):
    • hstack?將多個矩陣按列方向拼接(如三行三列 + 三行三列 → 三行六列)。
    • vstack?將多個矩陣按行方向拼接(如三行三列 + 三行三列 → 六行三列)。
  • ?concatenate?函數,可通過?axis?參數指定組合方向(axis=0?為垂直,axis=1?為水平)。
    import numpy as np
    array1=np.arange(9).reshape(3,3)
    print(array1)
    [[0 1 2][3 4 5][6 7 8]]
    array2=2*array1
    print(array2)
    [[ 0  2  4][ 6  8 10][12 14 16]]# 水平組合
    a3=np.hstack((array1,array2))
    print(a3)
    [[ 0  1  2  0  2  4][ 3  4  5  6  8 10][ 6  7  8 12 14 16]]
    a4=np.hstack((array2,array1))
    print(a4)
    [[ 0  2  4  0  1  2][ 6  8 10  3  4  5][12 14 16  6  7  8]]
    a5=np.hstack((array1,array2,array1))
    print(a5)
    [[ 0  1  2  0  2  4  0  1  2][ 3  4  5  6  8 10  3  4  5][ 6  7  8 12 14 16  6  7  8]]
    a6=np.concatenate((array1,array2),axis=0)#連接
    print(a6)
    [[ 0  1  2][ 3  4  5][ 6  7  8][ 0  2  4][ 6  8 10][12 14 16]]
    #垂直組合
    a7=np.vstack((array1,array2))
    print(a7)
    [[ 0  1  2][ 3  4  5][ 6  7  8][ 0  2  4][ 6  8 10][12 14 16]]

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

2.數組(矩陣)的切割

  • 水平切割(hsplit)和垂直切割(vsplit):
    • hsplit(array, 2)?將矩陣水平切分為兩部分(如四行四列 → 兩個四行兩列)。
    • vsplit?按行切分(如四行四列 → 兩個兩行四列)。
  • ?split()函數,通過?axis?參數指定切分方向。
    import numpy as np
    array1=np.arange(16).reshape(4,4)
    print(array1)
    [[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11][12 13 14 15]]# 水平切割
    a=np.hsplit(array1,2)#2表示二等分切割
    print(a)
    [array([[ 0,  1],[ 4,  5],[ 8,  9],[12, 13]]), array([[ 2,  3],[ 6,  7],[10, 11],[14, 15]])]b=np.split(array1,2,axis=1)
    print(b)
    [array([[ 0,  1],[ 4,  5],[ 8,  9],[12, 13]]), array([[ 2,  3],[ 6,  7],[10, 11],[14, 15]])]# 垂直切割
    c=np.vsplit(array1,2)
    print(c)
    [array([[0, 1, 2, 3],[4, 5, 6, 7]]), array([[ 8,  9, 10, 11],[12, 13, 14, 15]])]d=np.split(array1,2,axis=0)
    print(d)
    [array([[0, 1, 2, 3],[4, 5, 6, 7]]), array([[ 8,  9, 10, 11],[12, 13, 14, 15]])]

  • 補充:強制切割array_split),當無法均分時按近似規則切分(如五行五列按列切三份 → 2列+2列+1列)。
    # 強制切割
    # 水平切割
    e=np.array_split(array1,3,axis=1)
    #垂直切割
    f=np.array_split(array1,3,axis=0)

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

3.數組的數學運算

import numpy as np
array1=np.arange(1,5,1).reshape(2,2)
print(array1)
[[1 2][3 4]]
array2=2*array1
print(array2)
[[2 4][6 8]]# 數組的加法運算(對應位置的元素求和)
print(array1+array2)
[[ 3  6][ 9 12]]
# 數組的減法運算(對應位置的元素求差)
print(array1-array2)
[[-1 -2][-3 -4]]
# 數組的乘法運算(對應位置的元素相乘)
print(array1*array2)
[[ 2  8][18 32]]
# 數組的除法運算(對應位置的元素相除)
print(array1/array2)
[[0.5 0.5][0.5 0.5]]
# 數組的取余運算(%)
print(array1%array2)
[[1 2][3 4]]
# 數組的取整運算
print(array1//array2)
[[0 0][0 0]]

4.數組的深拷貝和淺拷貝

淺拷貝(賦值)會導致原數組與拷貝數組同步修改(如 array2 = array1)。
深拷貝(array.copy())獨立于原數組,修改不影響原數據。

5.隨機模塊

使用隨機種子(numpy.random.seed)控制隨機數生成,僅對 numpy.random 有效。
生成隨機數的方法:randint(整數)、rand(0-1小數)、normal(正態分布)。
正態分布參數:均值(loc)控制中心位置,標準差(scale)控制離散程度。
批量生成隨機矩陣(如 size=(5,5))。

import numpy as np
r1=np.random.rand()
print(r1)
0.8149436420776961r2=np.random.normal()
print(r2)
-1.1160570318641674# 生成隨機數矩陣
r3=np.random.randint(0,10,size=(5,5))
print(r3)
[[8 9 2 2 6][4 9 7 9 7][0 0 9 7 8][1 4 1 8 0][2 0 2 2 9]]r4=np.random.rand(5,5)
print(r4)
[[0.60023193 0.01419595 0.05549209 0.67160039 0.78314385][0.19544064 0.73777977 0.85955638 0.34585567 0.13006794][0.36708803 0.16558952 0.44353464 0.06849265 0.86387693][0.05052874 0.16835242 0.04308036 0.19164382 0.27588562][0.40844913 0.22696977 0.47796595 0.0091897  0.37547072]]r5=np.random.normal(5,10,size=(5,5))
print(r5)
[[  1.0609002   -8.5392921    9.48242322   0.75154795   3.48753174][ -4.0785129    8.4907759    6.11792809   2.05999932  -1.01203744][ -9.74659156   5.86627773  -6.91534249  28.65949618  -4.39634281][ -3.26680732   2.22344898  -0.54337157  -3.92376473  15.58922743][-15.10813251  -1.25358692  -9.96625947   4.65529048  -7.1070343 ]]

6.矩陣統計運算

基礎統計:方差(var)、標準差(std)、均值(mean)、求和(sum)、中位數(median)。
按行/列求和:通過 axis 參數(axis=1 為行,axis=0 為列)。

import numpy as nparray1=np.random.normal(size=(3,3))
print(array1)
[[-1.84629    -1.50233883 -0.30569565][-1.01779658 -1.12859979  0.48594668][ 1.01978122 -1.22772969 -0.22122007]]# 求方差
print(array1.var())
0.8039318921061643# 求標準差
print(array1.std())
0.8966224914121685# 求均值
print(array1.mean())
-0.638215856182889# 求和
print(array1.sum())
-5.743942705646001
# 求中位數
print(np.median(array1))
-1.0177965755982301
# 對矩陣的行求和
print(array1.sum(axis=1))
[-3.65432448 -1.66044968 -0.42916854]
# 對矩陣的列求和
print(array1.sum(axis=0))
[-1.84430536 -3.85866831 -0.04096904]

7.矩陣的特有運算點積,求逆

  • 點乘:a.dot(b)?或?numpy.dot(a, b),示例演示了矩陣乘法規則(如形狀匹配)。
  • 求逆:numpy.linalg.inv,驗證逆矩陣的正確性(原矩陣與逆矩陣相乘為單位矩陣)。
    import numpy as np
    a=np.arange(4).reshape(2,2)
    [[0 1][2 3]]
    b=a.copy()
    [[0 1][2 3]]
    a1=a.dot(b)
    print(a1)
    [[ 2  3][ 6 11]]
    a2=np.dot(a,b)
    print(a2)
    [[ 2  3][ 6 11]]         # 并不是所有矩陣都有逆,即使你沒有,也會給你一個偽逆
    a3=np.linalg.inv(a)
    print(a3)
    [[-1.5  0.5][ 1.   0. ]]

    8.文件讀取和保存

  • 直接讀取文本文件為矩陣:numpy.loadtxt,支持按分隔符解析數據,對于使用 tab 鍵分隔的文件,分隔符應設置為 \t;對于 CSV 文件,分隔符應設置為逗號(,)。
  • numpy.save 將矩陣存儲為文件,存儲的文件可直接打開查看矩陣內容。
  • 優勢:避免手動轉換字符串為數值類型,適合機器學習數據預處理
    # import numpy as np
    # data = np.loadtxt('',delimiter='')#delimiter指定分隔符# 將數組保存到txt文件中
    import numpy as np
    array=np.array([[1,2,3],[4,5,6],[7,8,9]])
    np.savetxt('array.txt',array)

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

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

相關文章

STL學習(?函數對象,謂詞,內建函數對象)

目錄 一、函數對象 1.函數對象的概念 2.函數對象的使用 (1)函數對象在使用的時候,可以像普通函數那樣調用,可以有參數,也可以有返回值。 (2)函數對象超出普通函數的概念,函數對象…

【爬蟲】05 - 爬蟲攻防

爬蟲05 - 爬蟲攻防 文章目錄爬蟲05 - 爬蟲攻防一:隨機User-Agent爬蟲1:fake-useragent2:高級反反爬策略3:生產環境建議二:代理IP爬蟲1:獲取代理IP2:高階攻防3:企業級的代理實戰三&am…

FPGA自學——存儲器模型

FPGA自學——存儲器模型 文章目錄FPGA自學——存儲器模型一、IP核二、ROM(read only memory)三、ROM的IP核調用四、RAM(random access memory)五、RAM的IP核調用總結1.不同波形的使用的存儲器2.塊與分布式的選擇3.FPGA與模塊的容量…

【C++】stack和queue拓展學習

目錄 1.反向迭代器思路及實現 1.1. 源碼及框架分析 1.2. 實現反向迭代器 2.stack和queue練習拓展-計算器實現 2.1. 后綴表達式概念 2.2. 后綴表達式運算規則 2.3. 中綴表達式轉后綴表達式 2.3.1 轉換思路 2.3.2 代碼實現 2.4. 計算器實現 1.反向迭代器思路及實現 1.1…

Web3與區塊鏈如何革新網絡安全——走在前沿

隨著互聯網技術的飛速發展,網絡安全問題日益成為全球關注的焦點。Web3和區塊鏈技術作為新興的技術力量,正在逐步改變網絡安全的格局。本文將探討Web3和區塊鏈技術如何革新網絡安全,走在技術前沿。 1. Web3技術概述 Web3,即第三代互…

網絡初級安全第三次作業

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>用戶登錄</title><style>* {margin:…

CSS中用display實現元素的顯示/隱藏切換

** 通過display中的none和block ** 在前端開發中&#xff0c;display: none 和 display: block 是兩種常用的 CSS 顯示模式&#xff0c;核心區別在于&#xff1a;是否在頁面中保留元素的占位空間 1. 核心區別屬性display: nonedisplay: block占位空間元素完全從渲染樹中移除&am…

因果圖方法設計測試用例的價值與使用范圍

一、因果圖方法的核心原理 因果圖方法通過分析軟件規格說明中的輸入條件&#xff08;因&#xff09;和輸出結果&#xff08;果&#xff09;之間的邏輯關系&#xff0c;利用圖形化方式將這些關系清晰展現。它使用特定的符號表示因果關系&#xff08;如恒等、非、或、與&#xff…

智慧農服數字化平臺-數字科技賦能農業,開啟智慧三農新篇章

智慧農服數字化平臺數字科技賦能農業&#xff0c;開啟智慧三農新篇章平臺概覽在鄉村振興和農業現代化的時代背景下&#xff0c;我們推出了創新的農業服務數字化平臺——一個專為農業生產者打造的綜合性SaaS服務平臺。平臺以"科技助農、數據興農"為使命&#xff0c;通…

在線教育培訓課程視頻如何防下載、防盜錄?

在數字化學習日益普及的今天&#xff0c;高質量的在線課程已成為教育機構、知識付費平臺和講師的核心競爭力。如何在不影響學員正常學習體驗的前提下&#xff0c;有效防止課程視頻被惡意盜取&#xff1f;今天介紹在線教育課程防下載、防盜錄的10種視頻加密方法&#xff0c;看看…

圖像分析學習筆記(2):圖像處理基礎

圖像分析學習筆記&#xff1a;圖像處理基礎圖像增強方法圖像復原方法圖像分割方法形態學處理圖像增強方法 目的&#xff1a;改善視覺效果&#xff0c;例如增強對比度定義&#xff1a;為了改善視覺效果、便于人或計算機對圖像的分析理解&#xff0c;針對圖像的特點或存在的問題…

生存分析機器學習問題

研究目標&#xff1a; 開發一個機器學習模型&#xff0c;用于個性化預測XXX的總體生存期。 模型輸入&#xff1a;結合生存時間、治療方案、人口統計學特征和實驗室測試結果等多種特征。 模型輸出&#xff1a;預測二元結果&#xff08;活著 vs. 死亡&#xff09;。 應用場景&…

【華為機試】547. 省份數量

文章目錄547. 省份數量描述示例 1示例 2提示解題思路核心分析問題轉化算法選擇策略1. 深度優先搜索 (DFS)2. 廣度優先搜索 (BFS)3. 并查集 (Union-Find)算法實現詳解方法一&#xff1a;深度優先搜索 (DFS)方法二&#xff1a;廣度優先搜索 (BFS)方法三&#xff1a;并查集 (Union…

09_Spring Boot 整合 Freemarker 模板引擎的坑

09_Spring Boot 整合 Freemarker 模板引擎的坑 1.背景&#xff1a; springboot 版本&#xff1a;3.0.2 2. 引入依賴 在 pom.xml 中添加&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web<…

十七、【Linux系統yum倉庫管理】替換阿里源、搭建本地yum源

替換阿里源、搭建本地yum源本章學習目標內容簡介阿里外網源核心功能本地yum核心功能操作演示替換阿里外網源備份原有yum源清理沖突配置下載阿里源配置文件添加EPEL擴展源清理緩存重建索引驗證源狀態測試安裝軟件使用鏡像搭建本地倉庫準備ISO鏡像創建掛載點目錄掛載iso文件驗證掛…

家庭網絡怎么進行公網IP獲取,及內網端口映射外網訪問配置,附無公網IP提供互聯網連接方案

在家庭網絡中&#xff0c;我們常常需要通過公網IP來訪問內網中的設備&#xff0c;比如家庭NAS、Web服務器或監控攝像頭。要實現這個目標&#xff0c;首先要確保你的網絡具有一個可用的公網IP&#xff0c;然后通過路由器配置端口映射&#xff08;Port Forwarding&#xff09;。如…

(LeetCode 面試經典 150 題 ) 128. 最長連續序列 (哈希表)

題目&#xff1a;128. 最長連續序列 思路&#xff1a;哈希表&#xff0c;時間復雜度0(n)。 用集合set來實現哈希表的功能&#xff0c;記錄所有出現的元素。然后遍歷元素&#xff0c;細節看注釋。 C版本&#xff1a; class Solution { public:int longestConsecutive(vector&…

Altera Quartus:BAT批處理實現一鍵sof文件轉換為jic文件

sof文件是Quartus編譯默認生成的程序文件&#xff0c;用于通過JTAG口下載到FPGA內部RAM&#xff0c;斷電程序會丟失&#xff0c;jic文件是用于固化到外部Flash中的程序文件&#xff0c;斷電程序不會丟失。本文介紹如何通過批處理文件實現sof到jic的一鍵自動化轉換。 Quartus工程…

基于單片機嬰兒床/嬰兒搖籃/嬰兒車設計/嬰兒監護系統

傳送門 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目速選一覽表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目功能速覽 概述 本設計實現了一種基于單片機的多功能智能嬰兒監護系統&#xff0c;集成于嬰兒床、搖籃或嬰兒車中…

Typora + 七牛云圖床終極配置教程

本文是一份超詳細的 Typora 七牛云圖床配置指南&#xff0c;旨在幫助你實現圖片“即插即用”的順滑寫作體驗。我們將一步步完成所有配置&#xff0c;并特別針對配置過程中最常見的三個錯誤&#xff1a;ENOTFOUND (找不到服務器)、401 (無權訪問) 和 Document not found (文件不…