day16 學習筆記

文章目錄

  • 前言
  • 一、廣播機制
  • 二、數組遍歷
    • 1.for循環
    • 2.nditer函數
  • 三、數組操作
    • 1.reshape函數
    • 2.flat屬性
    • 3.flatten函數
    • 4.revel函數
    • 5.數組轉置
    • 6.升維與降維
    • 7.數組的連接與分割
    • 8.數組運算


前言

  • 通過今天的學習,我進一步掌握了更多numpy的語法知識

一、廣播機制

  • 廣播(Broadcast)是 numpy 對不同形狀(shape)的數組進行數值計算的方式
  • 核心是對形狀較小的數組,在維度為1的橫向或縱向上進行一定次數的重復,使其與形狀較大的數組擁有相同的維度
a = np.array([[1, 2, 3], [4, 5, 6]])  # 形狀: (2, 3)
b = np.array([10, 20, 30])            # 形狀: (3,)
c = a + b
print(c)

tips:b是一維數組,可以暫時看做一行三列,通過廣播機制變為兩行三列即可與a相加

二、數組遍歷

1.for循環

  • 使用for循環遍歷數組的第一維度,可以理解為拆開數組第一層括號的結果
arr = np.array([[1, 2, 3], [4, 5, 6]])
for i in arr:print(i)

2.nditer函數

  • nditer函數一般用于遍歷多維數組中的每一個元素
  • 相較于flat屬性可以進行更加復雜的遍歷操作,如修改元素,以及指定遍歷順序等等
for i in np.nditer(arr,order="c"):print(i,end=",")
  • 使用flags參數指定迭代器額外行為;multi_index: 返回每個元素的多維索引。external_loop: 返回一維數組而不是單個元素
it = np.nditer(arr, flags=['multi_index'])
for x in it:print(f"元素: {x}, 對應索引: {it.multi_index}")
print(" ")
for x in np.nditer(arr, flags=['external_loop'], order='f'):print(x)

三、數組操作

1.reshape函數

  • 返回一個新數組,要求與原數組的元素個數保持一致
  • 新數組是原數組的視圖,對新數組進行修改會直接影響原數組
arr = np.array([1,2,3,4,5,6])
arr_1 = arr.reshape((2,3))
arr_2 = arr.reshape((3,-1)) #-1作為占位符,numpy自動計算
arr_3 = arr.reshape((2,3,1)) #可以理解為分為2個二維數組,每個二維數組是三行一列

2.flat屬性

  • 與nditer函數有相似的功能,用于行以優先遍歷數組元素,返回一個一維迭代器
arr = np.array([1,2,3,4,5,6])
for i in arr.flat:print(i)
print(arr.flat)

3.flatten函數

  • 將多維數組轉化為一維數組
  • 返回的是原數組的深拷貝,修改并不會影響原數組
arr = np.array([[1, 2, 3], [4, 5, 6]])
flat_arr = arr.flatten(order='C') #按行優先順序展開
print(flat_arr)
flat_arr[-1] = 7
print(arr)

4.revel函數

  • 將多維數組轉化為一維數組
  • 返回的是原數組的視圖,修改會直接影響原數組
arr = np.array([[1, 2, 3], [4, 5, 6]])
ravel_arr = arr.ravel() #按行優先順序展開
print(ravel_arr)
ravel_arr[-1] = 7
print(arr)

5.數組轉置

  • 在numpy中數組的轉置與數學意義上的轉置相同,可以使用transpose函數或者T屬性
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(np.transpose(arr))
print(arr.T)

6.升維與降維

  • 使用expand_dims和squeeze函數即可對數組進行升維和降維
a = np.array([1, 2, 3])
b = np.expand_dims(a, axis=0) #行方向升維
print(b)
c = np.expand_dims(a, axis=1) #列方向升維
print(c)c = np.array([[[1, 2, 3]]])
d = np.squeeze(c, axis=0)
print(d)
e = np.squeeze(c, axis=1)
print(e)
try:f = np.squeeze(c, axis=2) #指定刪除的維度值必須為1,否則將會報錯
except:print("error")
g = np.squeeze(c, axis=None) #若為None,則刪除數組維度中所有為 1 的項
print(g)

tips:降維要求降低的維度數必須為1,否則報錯;如果不指定降維的軸,則會對所有維度為1的軸進行降維

7.數組的連接與分割

  • 使用hstack和vstack函數對數組進行垂直,水平拼接
  • 要求使用時對應維度的形狀相同
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5], [6]])
result = np.hstack((arr1, arr2)) #豎直拼接
print(result)arr1 = np.array([1, 2, 3])
arr2 = np.array([[4, 5, 6],[7,8,9]])
result = np.vstack((arr1, arr2)) #水平拼接
print(result)
  • 使用hsplit和vsplit函數對數組進行垂直,水平分割
  • 需要指定分割處的索引
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
result = np.hsplit(arr, [1, 3]) #在索引1,3處分割
print(result[2])
result = np.vsplit(arr, [1]) #在索引1處分割
print(result[0])

8.數組運算

  • 對于二維數組,np.dot相當于矩陣乘法
  • 對于一維數組,np.dot相當于向量點積
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
result = np.dot(a, b)
print(result)
  • np.lianlg.det用于求行列式(要求方陣)
a = np.array([[1, 2], [3, 4]],dtype=int)
det_a = np.linalg.det(a) #計算行列式,要求方陣
print(det_a)

THE END

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

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

相關文章

使用FastExcel時的單個和批量插入的問題

在我們用excel表進行插入導出的時候,通常使用easyexcel或者FastExcel,而fastexcel是easy的升級版本,今天我們就對使用FastExcel時往數據庫插入數據的業務場景做出一個詳細的剖析 場景1 現在我們數據庫有一張組織表,組織表的字段…

Cannot find a valid baseurl for repo: centos-sclo-sclo/x86_64

? rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-latest-5.0.el7.noarch.rpmyum clean allyum macache fast? 編輯配置文件 /etc/yum.repos.d/zabbix.repo and enable zabbix-frontend repository. [zabbix-frontend]...enabled1... 下載相關…

AI基礎02-圖片數據采集

上篇文章我們學習了文本的數據采集,今天主要了解一下圖片數據采集的方法。圖片采集方法通常有網頁采集和實時采集(傳感器采集)兩種。我們學習一下如何利用python 工具和筆記本計算機攝像頭進行圖片數據的實時采集。 1)cv2庫簡介 …

【CSS】相對位置小練習

要求&#xff1a; 成果&#xff1a; 代碼&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>相對位置小練習</title><link rel"stylesheet" href"./css/style.css…

外設的中斷控制

如ADC、SPI、I2C、TIM等使用STM32 HAL庫時的中斷函數調用方式和UART非常類似&#xff0c;都有底層直接使能中斷和上層庫函數管理兩種方式。下面詳細說明幾種典型外設&#xff1a; 一、ADC外設 &#xff08;1&#xff09;直接使能中斷&#xff08;底層控制&#xff09;&#xf…

網絡傳輸優化之多路復用與解復用

一、基本概念 多路復用 發送端將來自多個應用或進程的數據流合并到同一物理信道中傳輸的過程。核心目的是提高信道利用率&#xff0c;減少資源浪費。例如&#xff0c;多個網絡應用&#xff08;如瀏覽器、郵件客戶端&#xff09;通過不同端口將數據封裝為報文段&#xff0c;共享…

【軟考-架構】10.1、軟件工程概述-CMM-軟件過程模型-逆向工程

?資料&文章更新? GitHub地址&#xff1a;https://github.com/tyronczt/system_architect 文章目錄 軟件工程基礎知識軟件工程概述能力成熟度模型能力成熟度模型CMM能力成熟度模型集成CMMI &#x1f4af;考試真題第一題第二題 軟件過程模型瀑布模型&#xff08;SDLC&#…

python將整個txt文件寫入excel的一個單元格?

要將整個txt文件寫入Excel的一個單元格&#xff0c;可以使用Python的openpyxl庫來實現。以下是一個簡單的示例代碼&#xff1a; from openpyxl import Workbook# 讀取txt文件內容 with open(file.txt, r) as file:txt_content file.read()# 創建一個新的Excel工作簿 wb Work…

車載以太網網絡測試 -25【SOME/IP-報文格式-1】

1 摘要 本專題接著上一專題對SOME/IP進行介紹&#xff0c;主要對SOME/IP報文格式以及定義的字段進行詳細介紹&#xff0c;有助于在實際項目過程中對SOME/IP報文的理解。 上文回顧&#xff1a; 車載以太網網絡測試 -24【SOME/IP概述】 2 SOME/IP-報文格式 通過上個專題介紹&a…

【區塊鏈安全 | 第五篇】DeFi概念詳解

文章目錄 DeFi1. DeFi 生態概覽2. 去中心化交易所&#xff08;DEX&#xff09;2.1 AMM&#xff08;自動做市商&#xff09;模型2.2 訂單簿模式&#xff08;現貨交易&#xff09; 3. 借貸協議3.1 Aave3.2 使用閃電貸&#xff08;Flash Loan&#xff09; 4. 穩定幣&#xff08;St…

問題:md文檔轉換word,html,圖片,excel,csv

文章目錄 問題&#xff1a;md文檔轉換word&#xff0c;html&#xff0c;圖片&#xff0c;excel&#xff0c;csv&#xff0c;ppt**主要職責****技能要求****發展方向****學習建議****薪資水平** 方案一&#xff1a;AI Markdown內容轉換工具打開網站md文檔轉換wordmd文檔轉換pdfm…

代碼隨想錄刷題day53|(二叉樹篇)106.從中序與后序遍歷序列構造二叉樹(▲

目錄 一、二叉樹理論知識 二、構造二叉樹思路 2.1 構造二叉樹流程&#xff08;給定中序后序 2.2 整體步驟 2.3 遞歸思路 2.4 給定前序和后序 三、相關算法題目 四、易錯點 一、二叉樹理論知識 詳見&#xff1a;代碼隨想錄刷題day34|&#xff08;二叉樹篇&#xff09;二…

前端知識點---用正則表達式判斷郵箱(javascript)

// 全面的正則&#xff08;兼容大多數情況&#xff09; const emailRegex /^[a-zA-Z0-9._%-][a-zA-Z0-9.-]\.[a-zA-Z]{2,}$/;// 或直接使用瀏覽器內置驗證 <input type"email" required>/&#xff1a;正則表達式的起始和結束標志。 ^&#xff1a;匹配字符串的…

PyQt6實例_批量下載pdf工具_界面開發

目錄 前置&#xff1a; 代碼&#xff1a; 視頻&#xff1a; 前置&#xff1a; 1 本系列將以 “PyQt6實例_批量下載pdf工具”開頭&#xff0c;放在 【PyQt6實例】 專欄 2 本系列涉及到的PyQt6知識點&#xff1a; 線程池&#xff1a;QThreadPool,QRunnable&#xff1b; 信號…

在word中使用zotero添加參考文獻并附帶超鏈接

一、引言 在寫大論文時&#xff0c;為了避免文中引用與文末參考文獻頻繁對照、修改文中引用順序/引用文獻時手動維護參考文獻耗易出錯&#xff0c;擬在 word 中使用 zotero 插入參考文獻&#xff0c;并為每個參考文獻附加超鏈接&#xff0c;實現交互式閱讀。 版本&#xff1a…

Selenium文件上傳

在 Web 自動化測試中,文件上傳是一項常見的任務。不同的網站和前端技術可能導致上傳方式有所不同,因此需要采用不同的方法進行處理。 方法 1:使用 send_keys() 直接上傳(最常用) 適用場景: 頁面中 有標準的 <input type="file"> 標簽。 不需要彈出 Wind…

線程概念與控制(中)

線程概念與控制&#xff08;上&#xff09;https://blog.csdn.net/Small_entreprene/article/details/146464905?sharetypeblogdetail&sharerId146464905&sharereferPC&sharesourceSmall_entreprene&sharefrommp_from_link我們經過上一篇的學習&#xff0c;接…

【Unity】 鼠標拖動物體移動速度跟不上鼠標,會掉落

錯誤示范&#xff1a; 一開始把移動的代碼寫到update里去了&#xff0c;發現物體老是掉(總之移動非常不流暢&#xff0c;體驗感很差&#xff09; void Update(){Ray ray Camera.main.ScreenPointToRay(Input.mousePosition);if (Physics.Raycast(ray, out RaycastHit hit, M…

MATLAB 控制系統設計與仿真 - 30

用極點配置設計伺服系統 方法2-反饋修正 如果我們想只用前饋校正輸入&#xff0c;從而達到伺服控制的效果&#xff0c;我們需要很精確的知道系統的參數模型&#xff0c;否則系統輸出仍然具有較大的靜態誤差。 但是如果我們在誤差比較器和系統的前饋通道之間插入一個積分器&a…

VMware Windows Tools 存在認證繞過漏洞(CVE-2025-22230)

漏洞概述 博通公司&#xff08;Broadcom&#xff09;近日修復了 VMware Windows Tools 中存在的一個高危認證繞過漏洞&#xff0c;該漏洞編號為 CVE-2025-22230&#xff08;CVSS 評分為 9.8&#xff09;。VMware Windows Tools 是一套實用程序套件&#xff0c;可提升運行在 VM…