NumPy核心操作全攻略

????????NumPy(Numerical Python)是 Python 生態中用于科學計算的核心庫,提供高性能的多維數組對象(ndarray)及相關的數學運算工具。其核心功能圍繞數組操作、線性代數、隨機數生成等,是數據科學、機器學習等領域的基礎依賴。

numpy核心數據類型

????????NumPy 的核心是?ndarray(N-dimensional array),一種高效存儲和操作多維數據的容器。與 Python 原生列表相比,ndarray?支持矢量化運算,避免循環,顯著提升性能。

  • 特性
    • 固定大小,創建后不可變(元素可修改)。
    • 所有元素類型相同(dtype?指定)。
    • 支持廣播(Broadcasting)機制實現不同形狀數組的運算。

numpy安裝

????????這個我們可以直接在命令行窗口或者終端進行pip install numpy就行了,但是可能會比較慢,我們這里加上清華的鏡像源

pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

創建一個ndarray對象

1 直接創建

import numpy as npa=np.array([0,1,2,3,4,5,6,7,8,9,10,11,12,13])
print(type(a))

這樣我們就創建了一個數組(如果我們想創建一個多維數組對象,我們直接傳入一個多維數組就行了),我們還查看了一下,我們創建了一個什么類型的數據,結果輸出<class 'numpy.ndarray'>,這樣我們就要記得,numpy創建的數據類型為<class 'numpy.ndarray'>

2 用可迭代對象arrang創建

import numpy as np
r1 = np.arange(0,9,3)
print(r1)

這里我們創建了一個一維的數組對象,可迭代對象內容為?[0 3 6]

3 用linspace創建

import numpy as np
r2 = np.linspace(0,1,5)
print(r2)

?先給出結果[0. ? 0.25 0.5 ?0.75 1. ?]

從結果可以看出,有三個參數,前兩個為區間的左右兩頭數值,最后一個表示個數,要注意這個數組內容都是浮點型的,對于arrange相比,這個左右區間都是閉的。

4 創建特殊數組

import numpy as np
a=np.zeros(3)
print('一維:\n',a)
b=np.zeros((3,3))
print('二維:\n',b)
c=np.zeros((3,3,3))
print('三維:\n',c)

輸出結果:

?這里我們創建了幾個全0矩陣,以為我們只能傳入一個參數。那么我們要傳入幾個參數的術后,我們要傳入一個數組,數組中幾個數表示幾位的。大小就是數組的那樣n*n*n的,同樣全一數組也是這樣的,用np.ones()就不展示了。

5 full()創建矩陣

import numpy as np
a=np.full((3,3),6)
print(a)

輸出結果:

我們可以看到,full可以提供兩個參數,一個來控制矩陣的維度大小,另有一個控制填充值。

6 創建單位矩陣

import numpy as np
a=np.eye(5,5)
print(a)

?輸出

這里我們輸出了一個矩陣,對角線全一,如果列和行不相同,那么就從左一開始為一,大家可以試下。

另外我們可以通過對我們創建的這個多維數組對象進行查看

我們可以看到這里有許多方法 ,其中包含許多方法,例如reshape,dot,copy,ndim等等,下面我們來說些常用的

numpy常用操作

1 查看矩陣基本數據類型

import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
print('矩陣形狀',a.shape)
print('矩陣維度',a.ndim)
print('矩陣大小',a.size)
print('矩陣儲存位置',a.data)
print('每個矩陣數據存儲所占位置',a.itemsize)

輸出結果

2 基本運算

import numpy as np
array1 = np.array([[1,2],[3,4]])
array2 = array1 * 2print(array1 + array2)  # 加法
print(array1 - array2)  # 減法
print(array1 * array2)  # 乘法
print(array1 / array2)  # 除法
print(array2 % array1)  # 取余
print(array1 // array2) # 取整

輸出結果?

3 reshape方法

這個既可以升維度也可以降維度。

import numpy as np
a=np.array([1,2,3,4,5,6,7,8])
b=a.reshape(2,4)
c=a.reshape(2,-1)
print(a)
print(b)
print(c)

?這里我展示了兩種修改數據形狀的方法,一種給出確定的大小,然后就可以轉化到自己想要的了,還有一種給出一個確定的,剩下可以讓機器自己算,注意這里要可以整除,不然會報錯。

我們這里還要注意,a.reshape(2,4)是又創建了一個副本,并不是對原來的數據進行修改,如果要對原本數據進行修改,我們要對他進行賦值例如a=a.reshape(2,4).

4 resize()方法

import numpy as np
a=np.array([[1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7,8]])
b=a.resize(2,2)
print(a)
print(b)

輸出

resize是一個可以調整矩陣大小的方法。可以調整到自己指定的大小。這里調整后的數據是從第一行開始取,作為我們調整后的數據。

注意!這里a.resize(2,2)是一個None值,說明我們調整的是a原本數據

5 repeat

import numpy as np
a=np.array([1,2,3])
c=a.repeat(3)
print(c)

?輸出

這個是將矩陣中每個值x參數個,不是數值x而是x個數。

6 選取

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

import numpy as np
a=np.array([[1,2,3,4,5,6,7,8],[9,10,11,12,13,14,15,16],[17,18,19,20,21,22,23,24]])
print(a[1:3,2:8])

結果

我們可以根據矩陣進行想列表中切片那樣,進行選取,拿第一個參數表示第一維為例,如果是[0:3]就表示從第一行到第二行的全選中了,[1:]表示第二行以及后面的。后面參數也是這樣。

7 flatten()

import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
b=a.flatten()
print(b)
#c = a.ravel()  有相同的作用

輸出

這個函數就相當于np.reshape(-1),revel也可以,但是flatten用到最多就是把矩陣展開變成一維的

8 矩陣的基本運算

點乘

import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(np.dot(a,[[2,2,2],[2,2,2],[2,2,2]]))
print(a.dot([[2,2,2],[2,2,2],[2,2,2]]))

輸出?

這里我用了兩種點乘的方法,輸出結果一樣。這里是矩陣與矩陣之間的相乘。

這里還有點需要注意的是,矩陣直接直接相乘是a*b,點乘是dot(a,b),矩陣直接相乘也可以a*2這樣可以直接將矩陣的數值擴大二倍。

轉置

import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
b=a.T
print(a)
print(b)

輸出直接用a.T來實現,這里也是生成了一個副本不是對源數據進行修改?

求逆

這里是求偽逆,不管這個矩陣有沒有可逆,都可以求所以我們要驗證下

import numpy as np
a=[[1,2],[3,4]]
b=np.linalg.inv(a)
print(b)
print(np.dot(a,b))

輸出

?9 連接

import numpy as np# 生成基數組
array1 = np.array([[1,2,3],[4,5,6]])
array2 = np.array([[7,8,9],[10,11,12]])# 水平組合(沿列方向拼接)
a3 = np.hstack((array1, array2))     # 水平拼接array1和array2
a4 = np.hstack((array2, array1))     # 水平拼接array2和array1
a5 = np.hstack((array1, array2, array1))  # 三數組水平拼接
a6 = np.concatenate((array1, array2), axis=1)  # 等價于vstack
print(a3)
print(a4)
print(a5)# 垂直組合(沿行方向拼接)
a7 = np.vstack((array2, array1))     # 垂直拼接array2和array1
print(a6)# 通用連接函數(axis=0為垂直方向)
a8 = np.concatenate((array1, array2), axis=0)  # 與vstack效果相同
print(a8)

輸出???????

上面我們采用了三種方法,分別是三種方法一種垂直方向,一種水平方向,還有給用concatenate來實現。可以參照對應輸出來看。

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

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

相關文章

Redis 主從同步對象模型

淘汰策略 對最外層的key進行淘汰 expire(秒)/pexpire(毫秒) ttlmaxmemory:最大內存的一半(持久化fork()子進程) 數據遷移需要額外的空間 maxmemory-policy 提供淘汰機制 默認不會淘汰 lru 最近最少使用 lfu最近最少頻次 voltaile 對由expire的進行淘汰持久化: fork:寫時復制原理…

C++ 使用 constexpr 、查表法、分治法加速位鏡像翻轉

代碼////// brief 左右翻轉位。////// note 翻轉后&#xff0c;最低位位將變為最高位&#xff0c;最高位將變為最低位。//////template <typename T>requires(std::is_same_v<T, uint8_t>)constexpr T Reverse(T value){int32_t bit_count sizeof(T) * 8;for (int…

知識庫搭建之Meilisearch‘s 搜索引擎 測評-東方仙盟測評師

windows 啟動后 啟動成功后關鍵信息 Config file path: "none" Database path: "./data.ms" Server listening on: "http://localhost:7700" Environment: "development" Commit SHA: &quo…

【筆記】Anaconda 重裝后虛擬環境寫入路徑異常的完整排查與解決過程

Anaconda 安裝[僅為當前用戶安裝/為所有用戶安裝]選項對環境變量設置的影響_anaconda沒有添加環境變量-CSDN博客 Anaconda 路徑治理指南&#xff1a;路徑精簡、權限優化與環境隔離-CSDN博客 Windows系統下手動升級Anaconda的詳細指南_anaconda升級-CSDN博客 Conda 命令大全&…

QuecPython-正則表達式

該模塊通過正則表達式匹配數據。目前支持的操作符較少&#xff0c;部分操作符暫不支持。示例&#xff1a;import ureres $GNRMC,133648.00,A,3149.2969,N,11706.9027,E,0.055,,311020,,,A,V*18 $GNGGA,133648.00,3149.2969,N,11706.9027,E,1,24,1.03,88.9,M,,M,,*6C $GNGLL,3…

QT窗口(3)-狀態欄

QT窗口&#xff08;3&#xff09;-狀態欄 狀態欄 代碼如下&#xff1a;//存在就獲取&#xff0c;不存在就創建QStatusBar*statusBarthis->statusBar();this->setStatusBar(statusBar);//顯示一個臨時消息statusBar->showMessage("這是一個狀態消息");運行結…

更具個性的域名:解鎖互聯網多元價值的鑰匙

關于Dynadot Dynadot是通過ICANN認證的域名注冊商&#xff0c;自2002年成立以來&#xff0c;服務于全球108個國家和地區的客戶&#xff0c;為數以萬計的客戶提供簡潔&#xff0c;優惠&#xff0c;安全的域名注冊以及管理服務。 Dynadot平臺操作教程索引&#xff08;包括域名郵…

深度學習模塊實踐手冊(第十一期)

46、縮放點積注意力模塊論文《Attention Is All You Need》1、作用&#xff1a; 縮放點積注意力&#xff08;Scaled Dot-Product Attention&#xff09;是 Transformer 模型的核心組件&#xff0c;旨在解決序列建模中長距離依賴關系捕捉的問題。傳統的循環神經網絡&#xff08;…

C++高級技術詳解

C高級技術詳解 目錄 模板 (Templates)右值和移動語義 (Rvalue and Move Semantics)定位 new (Placement new)強類型 (Strong Types)智能指針 (Smart Pointers)容器和算法 (Containers and Algorithms)Lambda表達式常量表達式 (constexpr)多線程和并發 (Multithreading and Co…

跨境賣家緊急自查,Endryko Karmadi四季版畫版權維權

25年7月2日&#xff0c;Keith律所代理印尼藝術家Endryko Karmadi發起全新版權維權行動。案件基本情況&#xff1a;起訴時間&#xff1a;2025-7-2案件號&#xff1a;25-cv-07436品牌&#xff1a;Endryko Karmadi Work原告&#xff1a;Endryko Karmadi 原告律所&#xff1a;keith…

M3088NL是一款網絡濾波器/變壓器支持100M和1000M網絡環境,適用于高速網絡傳輸場景M3088

M3088NL是一款網絡濾波器/變壓器&#xff0c;主要特點如下&#xff1a;兼容性 支持100M和1000M網絡環境&#xff0c;適用于高速網絡傳輸場景。 ?封裝形式 采用SOP/SOIC封裝&#xff0c;便于電路集成。 ?應用場景 常用于網絡電話、開關電源等需要穩定電流的設備&#xff0c;符…

PyQt動態布局管理器:QSplitter詳細指南

PyQt動態布局管理器&#xff1a;QSplitter詳細指南 QSplitter簡介 在PyQt中&#xff0c;除了常見的QVBoxLayout、QHBoxLayout等靜態布局管理器外&#xff0c;QSplitter提供了一種動態布局解決方案。QSplitter允許用戶通過拖拽分隔條來實時調整控件大小&#xff0c;為應用程序提…

Java設計模式之行為型模式(備忘錄模式)實現方式詳解

最近看到一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到網站 一、基礎實現結構 角色定義與代碼骨架 備忘錄模式包含三個核心角色&#xff0c;其協作關系如下&#xff1a; Originator&#xff08;發起人&…

k8s:離線部署tomcatV11.0.9,報Cannot find /opt/bitnami/tomcat/bin/setclasspath.sh

本文記錄了在離線環境下部署Tomcat容器時遇到的權限問題及解決方案。在Docker環境中運行Tomcat時出現&quot;找不到setclasspath.sh&quot;錯誤&#xff0c;通過添加--security-opt seccompunconfined參數解決。在Kubernetes環境中部署時出現相同問題&#xff0c;通過設置…

Linux操作系統之線程(五):線程封裝

目錄 前言 一、線程ID及進程地址空間布局 二、線程棧與線程局部存儲 三、線程封裝 總結&#xff1a; 前言 我們在上篇文章著重給大家說了一下線程的控制的有關知識。 但是如果我們要使用線程&#xff0c;就得那這pthread_create接口直接用嗎&#xff1f;這樣豈不是太過麻…

【物理與機器學習】從非平衡熱力學到擴散模型

[toc] 0.引子:從非平衡熱力學開始 1.架構簡介 2.反向過程的具體推導與 DDPM 改進摘要&#xff1a;擴散模型將非平衡熱力學的“噪聲注入—去噪逆轉”理念注入生成建模中。DDPM&#xff08;Denoising Diffusion Probabilistic Models&#xff09;在 SD2015 的基礎上&#xff0c;通…

Git常用命令詳解:從入門到精通

前言 Git作為當今最流行的分布式版本控制系統&#xff0c;已經成為開發者必備的技能之一。無論你是獨立開發者還是團隊協作&#xff0c;掌握Git的基本操作都能極大提高工作效率。本文將詳細介紹Git的常用命令&#xff0c;幫助你快速上手并精通Git的基本使用。 一、Git基礎概念…

Vue-22-通過flask接口提供的數據使用plotly.js繪圖(一)

文章目錄 1 任務背景 2 Flask提供接口(server.py) 2.1 原始代碼 2.2 跨域問題 3 Vue3獲取數據并渲染Plotly圖表 3.1 新建工程 3.2 程序 3.2.1 index.html(入口) 3.2.2 cpmponents/Plot.vue(子組件) 3.2.3 App.vue(父組件) 3.2.4 main.ts 3.3 展示 4 選擇圖表類型繪圖 4.1 App.v…

【mysql】換主鍵

需求&#xff1a;曲庫表的主鍵錯了&#xff0c;原先設置的是(sang_id),應該設置為&#xff08;sang_name,singer&#xff09;聯合主鍵。-- &#xff08;0&#xff09;先備份數據&#xff0c;我這里沒備份 -- &#xff08;1&#xff09;進行主鍵的切換之前&#xff0c;要進行一些…

Redis原理之緩存

上篇文章&#xff1a; Redis原理之集群https://blog.csdn.net/sniper_fandc/article/details/149141342?fromshareblogdetail&sharetypeblogdetail&sharerId149141342&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link 目錄 1 Redis作為MySQL…