numpy庫 降維,矩陣創建與元素的選取,修改

目錄

1.降維函數ravel()和flatten

ravel():

flatten():

2.矩陣存儲與內存結構

3.修改矩陣形狀的方法

4.特殊矩陣創建

全零矩陣: 如np.zeros(5)?創建含5個零的一維數組,輸出中零后的點(如?0.)表示浮點數類型。

全一矩陣:如np.ones(5)創建含5個1的一維數組

?編輯

矩陣中填充指定數據

對角線為1的矩陣

5.序列生成函數

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

6.一維數組元素的選取和修改

7.二維數組元素的選取和修改

8.三維矩陣元素的選取和修改


1.降維函數ravel()和flatten

ravel():

高維數據轉換為一維,返回原始數據的視圖(內存共享),僅改變展示形式(如三維→一維)。
示例:V.ravel() 生成一維數組 r2,與原數據 V 共享內存。

import numpy as np
list1=[1,2,3,4,5,6,7,8]
v=np.array(list1)
v=v.reshape(2,2,2)
r2=v.ravel()
print(r2)#[1,2,3,4,5,6,7,8]


flatten():

同樣降維為一維,但返回元數組的副本(內存獨立),修改副本不影響原數據
示例:V.flatten() 生成 r3,與原數據 V 無關聯。
核心區別: ravel 不創建副本,flatten 創建副本(獨立內存)

????????

import numpy as np
list1=[1,2,3,4,5,6,7,8]
v=np.array(list1)
v=v.reshape(2,2,2)
r3=v.flatten()#非常重要
print(r3)#[1,2,3,4,5,6,7,8]

2.矩陣存儲與內存結構

矩陣數據在內存中以鏈式結構存儲(非連續塊),按需分配空間,避免內存浪費。
矩陣的“展示形式”(如 2×2)僅為邏輯視圖,實際存儲通過指針鏈接分散的內存區域。

3.修改矩陣形狀的方法

shape 屬性: 直接修改(如 V.shape = (2,4))可調整維度結構。
其他方法: reshape、ravel、flatten 均可實現升維/降維

list1=[1,2,3,4,5,6,7,8]
v=np.array(list1)
v.shape=(2,4)
print(v)
#[[1,2,3,4],[5,6,7,8]]

4.特殊矩陣創建

np.zeros():創建全零矩陣,默認浮點類型。
np.ones():創建全一矩陣,類似 np.zeros() 用法。
np.full():填充指定值(如 np.full((2, 2), 5) 生成全為 5 的矩陣)。
np.eye():生成單位矩陣(主對角線為 1,如 np.eye(5, 5))。

  • 全零矩陣: 如np.zeros(5)?創建含5個零的一維數組,輸出中零后的點(如?0.)表示浮點數類型。

    import numpy as np
    #創建全為0的數組
    a=np.zeros(5)
    b=np.zeros((2,2))#只能接受一個參數
    c=np.zeros((3,2,2))
    print(a,'\n',b,'\n',c)

  • 注意:函數接收單個參數時,若需傳遞多值(如矩陣維度),需將值包裝為元組(如 (2, 2))np.zeros((2, 2))?創建 2x2 全零矩陣,外層括號為函數調用,內層為元組參數。

  • 全一矩陣:如np.ones(5)創建含5個1的一維數組

    import numpy as np    
    #創建全為一的數組
    d=np.ones(5)
    e=np.ones((2,2))
    f=np.ones((3,2,2))
    print(d,'\n',e,'\n',f)

  • 矩陣中填充指定數據

    import numpy as np
    g=np.full((2,2,2),5)
    print(g)

    生成一個全為5的(2,2,2)的三維數據

  • 對角線為1的矩陣

    import numpy as np
    h=np.eye(5,5)
    print(h)[[1. 0. 0. 0. 0.][0. 1. 0. 0. 0.][0. 0. 1. 0. 0.][0. 0. 0. 1. 0.][0. 0. 0. 0. 1.]]

5.序列生成函數

  • np.arange():類似?range(),生成等差序列的矩陣(如?np.arange(0, 9, 3)?生成?[0, 3, 6])。
    import numpy as np
    r1=np.arange(0,9,3)#(start,end,step)左閉右開的產生有規律的數據,與range()相似
    print(r1)[0 3 6]
  • np.linspace():在指定區間內均勻分割生成數據(如?np.linspace(0, 1, 21)?生成 21 個等間隔值)。
    import numpy as np
    r2=np.linspace(0,1,21)#(start,end,nums),左右都是閉區間
    print(r2)
    [0.   0.05 0.1  0.15 0.2  0.25 0.3  0.35 0.4  0.45 0.5  0.55 0.6  0.650.7  0.75 0.8  0.85 0.9  0.95 1.  ]

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

6.一維數組元素的選取和修改

索引與切片:與列表操作一致(如 array1[1] 獲取索引 1 的值)。
批量索引:通過列表指定多個索引(如 array1[[1, 3, 5]] 提取對應位置的值)。
修改元素:
單點修改:array1[0] = 10。
批量修改:array1[[1, 3, 5]] = 20 或切片賦值 array1[0:6] = 100

import numpy as np
array1=np.arange(1,9,1)
print(array1)# 選取某個元素
a=array1[1]# 選取某些元素
b=array1[[1,3,5]]
print(b)# 切片左閉右開
c=array1[0:6]
print(c)
# 修改某個元素
array1[0]=10
# 批量修改某些元素
array1[[1,3,5]]=20
print(array1)
array1[0:5]=10
print(array1)
[1 2 3 4 5 6 7 8]
[2 4 6]
[1 2 3 4 5 6]
[10 20  3 20  5 20  7  8]
[10 10 10 10 10 20  7  8]

注意:中括號 [] 在矩陣操作中僅用于索引/切片或創建列表,需注意上下文區分。

7.二維數組元素的選取和修改

import numpy as np
array1=np.arange(24).reshape(4,6)
print(array1)
[[ 0  1  2  3  4  5][ 6  7  8  9 10 11][12 13 14 15 16 17][18 19 20 21 22 23]]# 選取某個元素
a=array1[1,4]#第二行五列
# 選取某行元素
b=array1[1,:]#逗號分隔行和列
# 選取某些行
c=array1[[0,2],:]#如果不是連續的行,[]# 選取某列
d = array1[:,1]
# 選取某些列
e=array1[:,[1,3]]# 修改某個元素
array1[1,4]=100
# 修改某行元素
array1[1,:]=100
array1[[1,2],:]=50

8.三維矩陣元素的選取和修改

第一個逗號分隔維度,后續逗號分隔行和列(如 1,0,0 表示第一組數據的第0行第0列)

import numpy as np
array1=np.arange(48).reshape(2,4,6)
print(array1)
[[[ 0  1  2  3  4  5][ 6  7  8  9 10 11][12 13 14 15 16 17][18 19 20 21 22 23]][[24 25 26 27 28 29][30 31 32 33 34 35][36 37 38 39 40 41][42 43 44 45 46 47]]]
# 選取某個元素
# 首先確定選取哪個二維數組
a=array1[1,0,0]
print(a)
24
# 選取某行元素
b=array1[1,0,:]
print(b)
[24 25 26 27 28 29]
# 選取某些行元素
c=array1[0,[1,3],:]
print(c)
[[ 6  7  8  9 10 11][18 19 20 21 22 23]]
d=array1[0,1:3,:]
print(d)
[[ 6  7  8  9 10 11][18 19 20 21 22 23]]
# 選取某列
e=array1[0,:,1]
print(e)
[ 1  7 13 19]
# 選取某些列
f=array1[1,:,[1,3]]
print(f)
[[25 31 37 43][27 33 39 45]]
g=array1[0,:,1:4]
print(g)
[[ 1  2  3][ 7  8  9][13 14 15][19 20 21]]
# 修改
array1[1,0,0]=100

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

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

相關文章

SpringCloud seata全局事務

項目https://github.com/apache/incubator-seata docker拉取啟動server $ docker run --name seata-server -p 8091:8091 apache/seata-server:2.1.0 seata注冊到nacos <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-…

OpenLayers 快速入門(八)事件系統

看過的知識不等于學會。唯有用心總結、系統記錄&#xff0c;并通過溫故知新反復實踐&#xff0c;才能真正掌握一二 作為一名摸爬滾打三年的前端開發&#xff0c;開源社區給了我飯碗&#xff0c;我也將所學的知識體系回饋給大家&#xff0c;助你少走彎路&#xff01; OpenLayers…

【Linux | 網絡】應用層(HTTPS)

目錄一、HTTPS的概念二、準備概念2.1 什么是加密和解密2.2 為什么要加密2.3 常見的加密方式2.3.1 對稱加密2.3.1 非對稱加密2.4 數據摘要&&數據指紋三、HTTPS理解過程3.1 只使用對稱加密3.2 只使用非對稱加密3.3 雙方都使用非對稱加密3.4 對稱加密 非對稱加密3.5 中間…

GRE協議

一、實驗拓撲二、實驗配置1、靜態路由實現GRERT1配置&#xff1a;RT1(config)# int fa1/0RT1(config-if)# ip add 192.168.20.1 255.255.255.0RT1(config-if)# no shutdownRT1(config)# int fa0/0RT1(config-if)# ip add 172.1.1.2 255.255.255.0RT1(config-if)# no shutdownRT…

JDialong彈窗

public class DialogDemo extends JFrame {public DialogDemo(){this.setVisible(true);this.setSize(700,500);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//JFrame 放東西&#xff0c;容器Container contentPane this.getContentPane();//絕對布局conte…

tlias智能學習輔助系統--違紀處理(實戰)

目錄 1.StudentController.java 2.interface StudentService 3.StudentServiceImpl.java 4.interface StudentMapper 1.StudentController.java // 違紀處理PutMapping("/violation/{id}/{score}")Operation(summary "違紀處理")public Result violat…

傳統RNN模型筆記:輸入數據長度變化的結構解析

一、案例背景 本案例通過PyTorch的nn.RNN構建單隱藏層RNN模型&#xff0c;重點展示RNN對變長序列數據的處理能力&#xff08;序列長度從1變為20&#xff09;&#xff0c;幫助理解RNN的輸入輸出邏輯。 二、核心代碼與結構拆解 def dm_rnn_for_sequencelen():# 1. 定義RNN模型rnn…

OpenLayers 快速入門(四)View 對象

看過的知識不等于學會。唯有用心總結、系統記錄&#xff0c;并通過溫故知新反復實踐&#xff0c;才能真正掌握一二 作為一名摸爬滾打三年的前端開發&#xff0c;開源社區給了我飯碗&#xff0c;我也將所學的知識體系回饋給大家&#xff0c;助你少走彎路&#xff01; OpenLayers…

測試左移方法論

測試左移&#xff08;Shift-Left Testing&#xff09;?是一種軟件測試方法論&#xff0c;核心思想是將測試活動從傳統的開發后期&#xff08;如系統測試、驗收測試階段&#xff09;提前到軟件生命周期的更早期階段&#xff08;如需求分析、設計、編碼階段&#xff09;&#xf…

OpenCV(01)基本圖像操作、繪制,讀取視頻

圖像基礎 import cv2 as cv#讀取圖像 cv.imread(path,讀取方式)默認讀為彩色圖像 #cv.imread(path) cat cv.imread(E:\hqyj\code\opencv\images\\face.png)#顯示圖像 cv.imshow(window,img) cv.imshow(myimg,cat)print(cat) print(cat.shape) #(h,w,c) 元組(1,1) print(cat…

biji 1

1.應用層&#xff1a;為應用程序提供網絡服務。2.表示層&#xff1a;定義數據的格式&#xff0c;對數據進行壓縮、解壓縮、加密、解密、編碼、解碼。3.會話層&#xff1a;對通信雙方間的會話進行建立、維護、拆除-----session id---區分同一應用程序的不同進程4.傳輸層&#x…

mongodb的備份和還原(精簡)

1 官網下載對應版本msi2 運行msi mongodb-database-tools-windows-x86_64-100.12.2.msi3 將安裝地址加到環境變量 C:\Program Files\MongoDB\Tools\100\bin4 查看version mongodump --version mongorestore --version5 運行 備份命令 mongodump --host 127.0.0.1 --db dbname--…

Mac安裝Typescript報錯

目錄 Mac上安裝Typescript報錯: 原因分析 1. 默認 npm 全局安裝目錄的權限問題 2. Node.js 的安裝方式 如何解決?(無需每次用 `sudo`) 方法 1:修改 npm 全局目錄的權限(推薦) 方法 2:配置 npm 使用用戶級目錄 方法 3:使用 `nvm` 管理 Node.js(最推薦) 為什么建議避免…

spring-cloud概述

單體架構 把業務的所有功能實現都打包在一個war包或者jar包&#xff0c;這種方式就成為單體架構。 比如Spring課程中的博客系統,前端后端數據庫實現&#xff0c;都在一個項目中&#xff0c;這種架構就稱為單體架構. 舉個例子&#xff1a; 比如在電商系統中&#xff0c;我們…

android ROOM kotlin官方文檔完全學習

android ROOM kotlin官方文檔完全學習2.6 使用 Room 將數據保存到本地數據庫 | Android Developers (google.cn) 一、簡介 1.1 引入 dependencies {def room_version "2.6.1"implementation "androidx.room:room-runtime:$room_version"//如下三選一a…

DOM編程全解析:操作、事件與存儲實戰指南

引言&#xff1a;DOM——JavaScript與網頁交互的橋梁 DOM&#xff08;文檔對象模型&#xff09; 是JavaScript操作HTML/XML文檔的接口&#xff0c;它將網頁文檔抽象為一個樹形結構&#xff0c;允許開發者通過API動態修改文檔的內容、結構和樣式。無論是實現動態交互&#xff0…

Ansible命令

Ansible命令 ansible 常用命令 /usr/bin/ansible   #Ansibe AD-Hoc 臨時命令執行工具&#xff0c;常用于臨時命令的執行 /usr/bin/ansible-doc    #Ansible 模塊功能查看工具 /usr/bin/ansible-galaxy   #下載/上傳優秀代碼或Roles模塊 的官網平臺&#xff0c;基于網…

SY6974芯片添加enable充電控制節點

1. 需求描述項目背景&#xff1a;基于 Qualcomm MDM9x07 平臺的 4G MIFI 產品&#xff0c;使用 Silergy 公司的 SY6974 充電 IC需求內容&#xff1a; 在環境 /sys/class/power_supply/sy6794/enable 下增加一個 sysfs 節點&#xff0c;用于控制是否允許充電&#xff1a;cat /sy…

趣玩-Ollama-Llm-Chatrbot

軟件說明 這個軟件本人是從零開始實現的聊天機器人。基于Ollama&#xff08;PythonApi &#xff09; Pyside&#xff0c;實現了聊天機器的基本功能&#xff0c;還有一些個性化的功能比如模型管理&#xff0c;敏感詞過濾&#xff0c;個性化主題設置&#xff0c;頭像設置等功能。…

在mac 上zsh 如何安裝最新的 go 工具

文章目錄方法一&#xff1a;使用 Homebrew&#xff08;推薦&#xff09;方法二&#xff1a;從官網下載安裝包方法三&#xff1a;使用 g&#xff08;Go 版本管理器&#xff09;方法四&#xff1a;使用 gvm&#xff08;Go Version Manager&#xff09;驗證安裝和配置常用 Go 工具…