Python 商務數據分析—— NumPy 學習筆記Ⅱ

一、 數組元素值的替換

我們可以使用索引或 where () 函數來替換 NumPy 數組中的元素值。

1.1 方式一:索引
import numpy as npnp.random.seed(42)a3 = np.random.randint(0, 10, size=(3, 4))print("原數組:\n", a3)a3\[1] = 0  # 將a3數組第一行數據全部更換為0print("替換后數組:\n", a3)a3\[1] = np.array(\[1, 2, 3, 4])  # 將a3數組第一行數據更換為 \[1, 2, 3, 4]print("再次替換后數組:\n", a3)
1.2 方式二:條件索引
import numpy as npnp.random.seed(42)a3 = np.random.randint(0, 10, size=(3, 4))print("原數組:\n", a3)a3\[a3 < 3] = 1  # 數組中值小于3的元素全部替換為1print("條件替換后數組:\n", a3)
1.3 方式三:where () 函數
import numpy as npnp.random.seed(42)a3 = np.random.randint(0, 10, size=(3, 4))print("原數組:\n", a3)result = np.where(a3 < 5, 0, 1)  # 將a3數組中小于5的值替換為0,剩余值替換為1print("使用where()替換后數組:\n", result)

二、 數組的廣播機制

數組的廣播機制允許形狀不同的數組進行運算,只要它們的形狀是兼容的。廣播機制的基本原則是:如果兩個數組的后緣維度(從末尾開始算起的維度)的軸長度相同或其中一方的長度為 1,則認為它們是廣播兼容的。廣播會在缺失和(或)長度為 1 的維度上進行。

2.1 廣播原則
  • 如果兩個數組的后緣維度的軸長度相同或其中一方的長度為 1,則認為它們是廣播兼容的。

  • 廣播會在缺失和(或)長度為 1 的維度上進行。

示例:

  • shape 為 (3,8,2) 的數組能和 shape 為 (8,1) 的數組進行運算嗎?是。

  • shape 為 (3,1,8) 的數組能和 shape 為 (8,1) 的數組進行運算嗎?是。

2.2 數組與數字運算
import numpy as npa = np.random.randint(0, 5, size=(3, 5))print(a)a = a \* 2.345print(a.round(2))  # 數組中的所有元素都乘以2.345,并保留2位小數
2.3 數組與數組運算
import numpy as npa1 = np.random.randint(0, 5, size=(3, 5))a2 = np.random.randint(0, 5, size=(3, 5))print(a1 + a2)  # 數組形狀一致時,各個元素相加減(滿足數組廣播機制)a3 = np.random.randint(0, 5, size=(3, 4))\# a1 + a3  # 報錯,形狀不一致的數組不能相加減(不滿足數組廣播機制)

三、 數組形狀的操作

3.1 數組形狀的改變

(1) reshape 與 resize

import numpy as npa1 = np.random.randint(0, 10, size=(3, 4))print(a1)a2 = a1.reshape((2, 6))  # reshape是將數組轉換成指定的形狀,然后返回轉換后的結果,原數組的形狀不會發生改變print(a2)a1.resize((4, 3))  # resize是將數組轉換成指定的形狀,會直接修改數組本身,并且不會返回任何值print(a1)

(2) flatten 與 ravel

import numpy as npa3 = np.array(\[\[6, 9, 1, 6], \[4, 9, 4, 8], \[7, 0, 6, 0]])print(a3)a4 = a3.flatten()  # flatten將多維數組轉換為一維數組,并返回一個拷貝,后續對這個返回值的修改不會影響原數組a4\[0] = 100print("flatten后:", a4)print("原數組\[0,0]:", a3\[0, 0])a5 = a3.ravel()  # ravel將多維數組轉換為一維數組,并返回一個視圖,后續對這個返回值的修改會影響原數組a5\[0] = 200print("ravel后:", a5)print("原數組\[0,0]:", a3\[0, 0])
3.2 數組的疊加

(1) 垂直方向疊加的兩種方式

import numpy as npv1 = np.random.randint(0, 10, size=(3, 4))v2 = np.random.randint(0, 10, size=(2, 4))v3 = np.vstack(\[v1, v2])  # 垂直方向疊加v4 = np.concatenate(\[v1, v2], axis=0)  # 垂直方向疊加print(v3)print(v4)

(2) 水平方向疊加的兩種方式

import numpy as nph1 = np.array(\[\[5, 0, 8, 6], \[8, 5, 1, 8], \[4, 3, 6, 3]])h2 = np.array(\[\[4], \[5], \[3]])h3 = np.hstack(\[h1, h2])  # 水平方向疊加h4 = np.concatenate(\[h1, h2], axis=1)  # 水平方向疊加print(h3)print(h4)

(3) 先將數據拉伸轉換成一維數組,再拼接

import numpy as npnp.random.seed(42)h1 = np.random.randint(0, 10, size=(3, 4))h2 = np.random.randint(0, 10, size=(3, 1))h5 = np.concatenate(\[h1, h2], axis=None)  # 先拉伸轉換成一維數組,再拼接print(h5)
3.3 數組的切割

(1) 水平方向切割

import numpy as npnp.random.seed(42)hs1 = np.random.randint(0, 10, size=(3, 4))print(hs1)print(np.hsplit(hs1, 2))  # 水平方向平均分為2份(要求列數可被2整除)print(np.hsplit(hs1, (1, 2)))  # 水平方向分為1,1,2列(在下標為1,2處切割)

(2) 垂直方向切割

import numpy as npvs1 = np.array(\[\[6, 3, 7, 4, 6], \[9, 2, 6, 7, 4], \[3, 7, 7, 2, 5], \[4, 1, 7, 5, 1]])print(vs1)print(np.vsplit(vs1, 4))  # 垂直方向平均分為4份print(np.vsplit(vs1, (1, 3)))  # 垂直方向分為1,2,1份(在下標為1,3處切割)

(3) 指定切割方式

import numpy as nparr = np.array(\[\[1, 2, 7, 9], \[9, 7, 7, 8], \[3, 1, 2, 6]])print(np.split(arr, 4, axis=1))  # 按列平均切割print(np.split(arr, 4, axis=0))  # 按行平均切割
3.4 矩陣轉置

(1) 通過 ndarray.T 進行轉置

import numpy as npt1 = np.random.randint(0, 10, size=(3, 4))print(t1)print(t1.T)  # 數組t1轉置print(t1.dot(t1.T))  # 矩陣相乘

(2) 通過 ndarray.transpose () 進行轉置

import numpy as npt2 = t1.transpose()t2\[0, 0] = 99  # 修改會影響原來的數組print(t2)print(t1)

四、 Axis 理解

在 NumPy 中,axis 是指數組的某個維度,用于指定對數組進行操作時沿著哪個維度進行操作。

4.1 Axis

axis 用于指定軸是行還是列,默認 axis=0。axis=0 代表沿著行的方向進行操作,axis=1 代表沿著列的方向進行操作。

(1) 求 x 數組在 axis=0 和 axis=1 兩種情況下的和

import numpy as npx = np.array(\[\[0, 1], \[2, 3]])print(x.sum(axis=0))  # 按列求和print(x.sum(axis=1))  # 按行求和

(2) 用 np.max 求 axis=0 和 axis=1 兩種情況下的最大值

import numpy as npnp.random.seed(100)x = np.random.randint(1, 10, size=(3, 5))print(x)print(x.max(axis=0))  # 按列求最大值print(x.max(axis=1))  # 按行求最大值

(3) 用 np.delete 在 axis=0 和 axis=1 兩種情況下刪除元素

import numpy as npnp.random.seed(100)x = np.random.randint(1, 10, size=(3, 5))print(x)print(np.delete(x, 0, axis=0))  # 刪除第0行print(np.delete(x, 0, axis=1))  # 刪除第0列

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

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

相關文章

遙感圖像語義分割1-安裝mmsegmentation

參考&#xff1a; mmsegmentation: 安裝并使用自定義數據集進行訓練_mmsegmentation安裝-CSDN博客 最新Windows配置安裝mmcv與mmsegmentation&#xff0c;以及mmsegmentation的驗證_mmcv安裝-CSDN博客 GitCode - 全球開發者的開源社區,開源代碼托管平臺 參考&#xff1a; …

【菜狗的記錄】模糊聚類最大樹、圖神經網絡、大模型量化——20250627

每日學習過程中記錄的筆記&#xff0c;從各個網站整理下來&#xff0c;用于當日復盤。 如果其中的知識點能幫到你&#xff0c;也很榮幸呀。 -------------------------------------------------------20250622------------------------------------------------------------- …

《短劇平臺開發指南:技術方案、核心功能與行業趨勢》

一、短劇行業現狀與系統開發價值 近年來&#xff0c;短劇市場呈現爆發式增長&#xff0c;成為數字內容領域的新風口。數據顯示&#xff0c;2023年國內短劇市場規模已突破300億元&#xff0c;用戶規模達到4.5億。這種以"短、平、快"為特點的內容形式&#xff0c;憑借…

[FPGA]嵌入式系統FPGA設計資源

嵌入式系統FPGA設計資源 一、供應商 https://www.altera.com- Altera FPGA 供應商網站 https://www.altera.com/events/northamerica/intel-soc-fpga-developer-forum/overview.html- SoC 開發人員論壇 https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/li…

ClickHouse 可觀測性最佳實踐

ClickHouse 介紹 ClickHouse 是一款高性能、列式存儲的開源分析型數據庫&#xff0c;專為在線分析處理&#xff08;OLAP&#xff09;場景設計。它能夠處理海量數據&#xff0c;支持實時查詢和復雜的數據分析&#xff0c;具備極高的讀寫性能和數據壓縮能力。ClickHouse 提供了強…

Android Framework設置時間為24小時制

文章目錄 定位源碼實現附錄12 小時制與 24 小時制的詳細解析一、基本定義與核心區別二、轉換方法與示例三、應用場景與文化差異四、延伸知識&#xff1a;特殊計時制與歷史背景 目的是把設置中使用默認語言區域關掉&#xff0c;并把使用24小時制打開 如下圖為原始的&#xff1a;…

基于STM32設計的掃地機器人

一、前言 1.1 項目介紹 【1】項目開發背景 隨著社會節奏的加快和人們生活方式的改變&#xff0c;智能家居產品逐漸走入千家萬戶。作為智能清潔系統的重要組成部分&#xff0c;掃地機器人憑借其自動化、高效性和便捷性&#xff0c;成為現代家庭中不可或缺的智能設備之一。傳統…

什么是接口測試?

2025最新Jmeter接口測試從入門到精通&#xff08;全套項目實戰教程&#xff09; 接口測試概念 接口測試是項目測試的一部分&#xff0c;它測試的主要對象是接口&#xff0c;是測試系統組件間接口的一種測試。接口測試主要用于檢測外部系統與所測系統之間以及內部各系統之間的交…

JDY-23藍牙模塊與電腦的連接方式

JDY-23藍牙模塊支持多種連接方式&#xff0c;包括SPP&#xff08;串口通信&#xff09;模式和BLE&#xff08;低功耗藍牙&#xff09;模式。以下是與電腦連接的具體方法&#xff1a; 1. 通過SPP模式連接 JDY-23模塊支持SPP協議&#xff0c;可以通過串口與電腦通信。以下是連接…

【網絡】Linux 內核優化實戰 - net.core.rmem_max

目錄 參數作用與原理默認值與查看方法調整場景與方法適用場景調整方法 與其他參數的協同性能影響與注意事項典型案例總結 net.core.rmem_max 是 Linux 內核中控制 套接字接收緩沖區&#xff08;Receive Buffer&#xff09;最大允許值 的參數。它與 net.core.rmem_default&#…

設計模式 | 工廠模式

工廠模式&#xff08;Factory Pattern&#xff09; 是創建型設計模式的核心成員&#xff0c;它通過將對象創建的邏輯封裝起來&#xff0c;實現了創建與使用的解耦。本文將深入探討工廠模式的核心思想、實現技巧以及在C中的高效實現方式。 為什么需要工廠模式&#xff1f; 在軟…

數字孿生技術驅動UI前端變革:從靜態展示到動態交互的飛躍

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩! 在數字化轉型的深水區&#xff0c;數字孿生技術正以破竹之勢重構 UI 前端的技術邏輯與設計理念…

Django實戰:自定義中間件實現全鏈路操作日志記錄

文章目錄 一、中間件介紹激活中間件生命周期 二、自定義中間件中間件鉤子函數基于類的中間件 三、實戰案例操作日志功能參考資料 一、中間件 介紹 在 Django 中&#xff0c;中間件&#xff08;Middleware&#xff09;是一組輕量級、底層的插件系統&#xff0c;用于全局地改變…

Java編程之迭代器模式(Iterator Pattern)

引言&#xff1a; 走進圖書館&#xff0c;你站在一排書架前&#xff0c;想要瀏覽書籍。你會一格格地從左到右翻閱書籍&#xff0c;而不是去研究書架是什么。 一本書一本書地翻&#xff0c;才知道書架上藏了什么書&#xff0c;研究書架的構造是不知道書籍的內容的。 這種“逐本…

ARM64 linux系統的一般執行過程

1、正在運行的用戶進程X 2、發生異常&#xff08;包括系統調用等&#xff09;&#xff0c;CPU完成的工作&#xff1a;把當前程序指針寄存器PC放入ELR_EL1寄存器&#xff0c;把PSTATE放入SPSR_EL1寄存器&#xff0c;把異常產生的原因放在ESR_EL1寄存器&#xff0c;將異常向量表…

Vue3+ element 實現導入導出

一、導入功能相關代碼分析 相關變量定義 importVisible&#xff1a;這是一個ref類型的響應式變量&#xff0c;用于控制導入對話框的顯示與隱藏&#xff0c;初始值為false。當用戶點擊 “導入” 按鈕時&#xff0c;會嘗試將其值設為true來顯示導入對話框&#xff0c;若出現異常則…

Git安裝(純小白版)

一、Git安裝 1. 簡介 Git是一款免費開源的分布式版本控制系統&#xff0c;常用于軟件開發。它能記錄文件在不同時間的改動&#xff0c;讓用戶在需要時查看、恢復舊版本。支持多人協作開發&#xff0c;多人可同時修改項目文件&#xff0c;Git會處理好沖突。開發者能在本地創建…

cocos2 本地根據文本內容生成二維碼

cocos2 本地根據文本內容生成二維碼 之前做了一個功能&#xff0c;就是cocos2小游戲&#xff0c;結算頁面需要有一個二維碼&#xff0c;二維碼內容是一個網址&#xff0c;這個網址需要根據用戶游玩分數確定訪問哪個網址&#xff0c;但是這個小游戲是單機小游戲&#xff0c;不連…

87.xilinx FPGA讀取器件id方法

dout數據高位先出msb module chip_id_reader(input clk,input reset,output [56:0] dna_value,output dna_valid );reg [6:0] bit_count;reg [56:0] dna_shift_reg;reg dna_read;reg dna_shift;wire dna_out;// 實例化DNA_PORT原語DNA_PORT #(.SIM_DNA_VALUE(57h123456789ABCD…

AcWing--數據結構(二)

Trie 樹 用來高效的快速存儲和查找字符串集合的數據結構 如存儲&#xff1a;abcdef,abdef,aced,... 從根節點開始存儲&#xff0c;從前往后存儲&#xff0c;看是否有a&#xff0c;沒有就創建&#xff0c;依次存儲。 一般在最后一個字符打個標記&#xff0c;意思就是當前字符…