0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Numpy詳解-軸的概念

云深之無跡 ? 來源:云深之無跡 ? 作者:云深之無跡 ? 2022-04-25 10:25 ? 次閱讀

首先就是大腸包小腸,這就是軸的概念,除了這個還真的沒有什么別的想法。

最近用numpy,越用這個東西越發(fā)現(xiàn)一些基礎(chǔ)概念不明朗,這里簡單的記錄一下。

4570ff4a-c43e-11ec-bce3-dac502259ad0.png

先生成一個三維的數(shù)組

459697be-c43e-11ec-bce3-dac502259ad0.png

打印出來的樣子

45ac831c-c43e-11ec-bce3-dac502259ad0.png

從內(nèi)最小的開始看起,分別是元素,2,3,4

以小[]來界定

45c22b90-c43e-11ec-bce3-dac502259ad0.png

也就是說,首先是一個特別大的整體,一個數(shù)組,接著是里面4個小數(shù)組,每一個小數(shù)組里面有3個小數(shù)組,小數(shù)組內(nèi)的單元是一個數(shù)對來構(gòu)成的。

其實這就是軸的概念,只是因為是扁平化的,不直觀。

axis=2

axis=1

axis=0

45d50058-c43e-11ec-bce3-dac502259ad0.png

按照順序來填充

45e62216-c43e-11ec-bce3-dac502259ad0.png

按照數(shù)組0軸來相加

46038a0e-c43e-11ec-bce3-dac502259ad0.png

就是加的這個位置的元素

[[0+ 6+12+18=36 1+ 7+13+19=40] [2+ 8+14+20=44 3+ 9+15+21=48] [4+10+16+22=52 5+11+17+23=56]]

46187f68-c43e-11ec-bce3-dac502259ad0.png

再看一個

4633b71a-c43e-11ec-bce3-dac502259ad0.png

就是這樣吧

[[ 0+ 1=1 2+ 3=5 4+ 5=9] [ 6+ 7=13 8+ 9=17 10+11=21] [12+13=25 14+15=29 16+17=33] [18+19=37 20+21=41 22+23=45]]

464b34c6-c43e-11ec-bce3-dac502259ad0.png

這個就沒有什么好說的了吧

46609c08-c43e-11ec-bce3-dac502259ad0.png

其中第一軸是最大的稱為0號,

其次開始從左到右依次的放置

NumPy數(shù)組的維數(shù)稱為秩(rank),一維數(shù)組的秩為1,二維數(shù)組的秩為2,以此類推。在NumPy中,每一個線性的數(shù)組稱為是一個軸(axes),秩其實是描述軸的數(shù)量。比如說,二維數(shù)組相當(dāng)于是兩個一維數(shù)組,其中第一個一維數(shù)組中每個元素又是一個一維數(shù)組。所以一維數(shù)組就是NumPy中的軸(axes),第一個軸相當(dāng)于是底層數(shù)組,第二個軸是底層數(shù)組里的數(shù)組。而軸的數(shù)量——秩,就是數(shù)組的維數(shù)。

NumPy的數(shù)組中比較重要ndarray對象屬性有:

1.ndarray.ndim:數(shù)組的維數(shù)(即數(shù)組軸的個數(shù)),等于秩。最常見的為二維數(shù)組(矩陣)。

2.ndarray.shape:數(shù)組的維度。為一個表示數(shù)組在每個維度上大小的整數(shù)元組。例如二維數(shù)組中,表示數(shù)組的“行數(shù)”和“列數(shù)”。ndarray.shape返回一個元組,這個元組的長度就是維度的數(shù)目,即ndim屬性。

3.ndarray.size:數(shù)組元素的總個數(shù),等于shape屬性中元組元素的乘積。

4.ndarray.dtype:表示數(shù)組中元素類型的對象,可使用標(biāo)準(zhǔn)的Python類型創(chuàng)建或指定dtype。另外也可使用前一篇文章中介紹的NumPy提供的數(shù)據(jù)類型。

5.ndarray.itemsize:數(shù)組中每個元素的字節(jié)大小。例如,一個元素類型為float64的數(shù)組itemsiz屬性值為8(float64占用64個bits,每個字節(jié)長度為8,所以64/8,占用8個字節(jié)),又如,一個元素類型為complex32的數(shù)組item屬性為4(32/8)。

6.ndarray.data:包含實際數(shù)組元素的緩沖區(qū),由于一般通過數(shù)組的索引獲取元素,所以通常不需要使用這個屬性。

其實進(jìn)一步的,是闡述了一種方向的問題:在二維數(shù)組中axis=0是按列的,axis=1意味著按行。

468405b2-c43e-11ec-bce3-dac502259ad0.png

這個圖太漂亮了

事實上,到這里的時候還是沒有說明白主要的軸到底是怎么出來的,那繼續(xù)。

46a74310-c43e-11ec-bce3-dac502259ad0.png

軸是行列的方向

如果是多維的數(shù)組,那axis=0就是向下的軸,axis=1是往右延的軸。

這些東西影響著你未來作用到上面的函數(shù),該算哪些東西。而且進(jìn)行計算的時候是會進(jìn)行折疊,就是從這些指定的位置采用運算規(guī)律。

46c7cb9e-c43e-11ec-bce3-dac502259ad0.png

就是這樣的,加到一起,2就變成了1

46ec82e0-c43e-11ec-bce3-dac502259ad0.png

axis=0的拼接方式

471597ac-c43e-11ec-bce3-dac502259ad0.png

axis=1,橫向拼接

結(jié)論:將NumPy軸視為我們可以執(zhí)行操作的方向。

接下來再補(bǔ)充一些,別的理解,盡量我們一篇文章解決這個問題。

473a0e3e-c43e-11ec-bce3-dac502259ad0.png

這個也是

47635046-c43e-11ec-bce3-dac502259ad0.png

這個圖是讓我喜歡的不行,它清楚的展示了這個數(shù)組軸的包含關(guān)系

47aa845c-c43e-11ec-bce3-dac502259ad0.png

數(shù)組之間的算數(shù)關(guān)系

47d62eea-c43e-11ec-bce3-dac502259ad0.png

運算緊湊,使用了非動態(tài)的特性

4800da00-c43e-11ec-bce3-dac502259ad0.png

使用Python的列表語法可以輕松的創(chuàng)建一個數(shù)組,要確保元素都一致

4821d642-c43e-11ec-bce3-dac502259ad0.png

由于數(shù)組的原因,沒有了動態(tài)添加元素的特性,所以只能提前的把位置留好。

4844936c-c43e-11ec-bce3-dac502259ad0.png

再有了變量的情況先,可以使用like函數(shù)生成一個相似的數(shù)組

485dd584-c43e-11ec-bce3-dac502259ad0.png

提供了完整的生成函數(shù)

487e3cde-c43e-11ec-bce3-dac502259ad0.png

可以使用單調(diào)序列初始化數(shù)組

48a88908-c43e-11ec-bce3-dac502259ad0.png

arange對浮點不太友好

48d6e7bc-c43e-11ec-bce3-dac502259ad0.png

隨機(jī)數(shù)組也可以生成,這個太常見了

生成完成了,下一個階段就是取數(shù)了;

48fe13dc-c43e-11ec-bce3-dac502259ad0.png

就像這樣,通過索引來切割

49273e24-c43e-11ec-bce3-dac502259ad0.png

布爾和掩碼真的是太好用了!!??!

495cfba4-c43e-11ec-bce3-dac502259ad0.png

還有專有的函數(shù),大規(guī)模的進(jìn)行取數(shù)操作

49821844-c43e-11ec-bce3-dac502259ad0.png

向量化操作無疑是最引人注目的東西

49a6f7e0-c43e-11ec-bce3-dac502259ad0.png

浮點也OJBK

49c47ee6-c43e-11ec-bce3-dac502259ad0.png

常見函數(shù)不在話下,矢量化的意義在于可以同時操作海量數(shù)據(jù),具有天然的并行化。

49e4f77a-c43e-11ec-bce3-dac502259ad0.png

這是內(nèi)積和叉積

4a04794c-c43e-11ec-bce3-dac502259ad0.png

三角函數(shù)不能少

4a255c34-c43e-11ec-bce3-dac502259ad0.png

四舍五入的操作也有

4a487386-c43e-11ec-bce3-dac502259ad0.png

關(guān)于統(tǒng)計的功能也有

4a709ef6-c43e-11ec-bce3-dac502259ad0.png

矩陣的初始化,注意參數(shù)的位置,先行,后列

4a98bd14-c43e-11ec-bce3-dac502259ad0.png

隨機(jī)矩陣也是經(jīng)常要用的

4ac9542e-c43e-11ec-bce3-dac502259ad0.png

索引語法要好好的看,注意是從0開始,記得+1

4af8cc18-c43e-11ec-bce3-dac502259ad0.png

上面放過這個圖,但是為了完整性,這里再放一次

4b182e50-c43e-11ec-bce3-dac502259ad0.png

@計算矩陣的乘積

4b3bc6e4-c43e-11ec-bce3-dac502259ad0.png

廣播機(jī)制,這個怎么說呢。就是運算我們一般是規(guī)模相同的進(jìn)行計算,不相同的時候需要變的相同。其實就是一套規(guī)則。

4b5077e2-c43e-11ec-bce3-dac502259ad0.png

先簡單點,規(guī)模一樣

4b61c092-c43e-11ec-bce3-dac502259ad0.png

這個就不一樣了

4b7efc02-c43e-11ec-bce3-dac502259ad0.png

這就是廣播,先是維數(shù)的調(diào)整,兩個維數(shù)一致,接著調(diào)整內(nèi)部的參數(shù)

4b3bc6e4-c43e-11ec-bce3-dac502259ad0.png

你看這個,9x9與后面這樣的東西運算,不就是要使用廣播嗎?

4bb68668-c43e-11ec-bce3-dac502259ad0.png

轉(zhuǎn)置

4bd88bdc-c43e-11ec-bce3-dac502259ad0.png

數(shù)組重構(gòu)

4bff1cd4-c43e-11ec-bce3-dac502259ad0.png

互相之間的轉(zhuǎn)換圖,這個要記住

4c2210fe-c43e-11ec-bce3-dac502259ad0.png

拼接操作,我也寫過

4c53fcae-c43e-11ec-bce3-dac502259ad0.png

也是拼接

4c754580-c43e-11ec-bce3-dac502259ad0.png

拆分

4c9c3bf4-c43e-11ec-bce3-dac502259ad0.png

tile復(fù)雜黏貼,repeat是分頁打印

4cc10b00-c43e-11ec-bce3-dac502259ad0.png

這個是可以刪除對應(yīng)的行列,這不就是白給

4ce517f2-c43e-11ec-bce3-dac502259ad0.png

插入操作

4d0b7f0a-c43e-11ec-bce3-dac502259ad0.png

邊界添加常數(shù),就好像鑲邊一樣

下面的內(nèi)容有趣:

4d2dad96-c43e-11ec-bce3-dac502259ad0.png

創(chuàng)建這樣的東西,C和Python的做法是這樣的

4d588fe8-c43e-11ec-bce3-dac502259ad0.png

matlab這樣做,相對于先生成兩個行向量,接著開始廣播,運算

4d7770e8-c43e-11ec-bce3-dac502259ad0.png

這個地方是numpy的做法,效率更高。上面是生成網(wǎng)格的算法

4d94ba86-c43e-11ec-bce3-dac502259ad0.png

numpy的排序算法有點問題,這里就不討論了,因為我也沒有搞明白

4db7681a-c43e-11ec-bce3-dac502259ad0.png

返回索引,其實就是坐標(biāo),有時位置是很重要的

4de5c354-c43e-11ec-bce3-dac502259ad0.png

all和any就是有沒有的問題

4e0d2f16-c43e-11ec-bce3-dac502259ad0.png

三維的接下來會說

4e4af350-c43e-11ec-bce3-dac502259ad0.png

至于形狀怎么樣,會看你的約定。

接下來再加點東西,也不知道有沒有人能看到這里。

4e7e47aa-c43e-11ec-bce3-dac502259ad0.png

上面頻繁的說了拼接的事情,這里帶你看看有什么參數(shù)

4e9bb06a-c43e-11ec-bce3-dac502259ad0.jpg

這個圖沒什么用,我就是覺得好看

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 元素
    +關(guān)注

    關(guān)注

    0

    文章

    47

    瀏覽量

    8395
  • 數(shù)據(jù)類型
    +關(guān)注

    關(guān)注

    0

    文章

    236

    瀏覽量

    13567
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    411

    瀏覽量

    25821

原文標(biāo)題:Numpy詳解-軸的概念

文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    使用MSPM0 MCU設(shè)計單和三自拍桿

    電子發(fā)燒友網(wǎng)站提供《使用MSPM0 MCU設(shè)計單和三自拍桿.pdf》資料免費下載
    發(fā)表于 09-02 09:45 ?0次下載
    使用MSPM0 MCU設(shè)計單<b class='flag-5'>軸</b>和三<b class='flag-5'>軸</b>自拍桿

    測徑儀詳解與應(yīng)用

    測徑儀是一種用于測量材料直徑或其他細(xì)長物體尺寸的精密儀器。以下是對單測徑儀的詳細(xì)介紹: 一、定義與應(yīng)用 單測徑儀通過非接觸式測量技術(shù),如激光束或光學(xué)投影儀,對物體的直徑、厚度、寬度等幾何尺寸
    發(fā)表于 08-20 17:34

    使用NumPy實現(xiàn)前饋神經(jīng)網(wǎng)絡(luò)

    要使用NumPy實現(xiàn)一個前饋神經(jīng)網(wǎng)絡(luò)(Feedforward Neural Network),我們需要從基礎(chǔ)開始構(gòu)建,包括初始化網(wǎng)絡(luò)參數(shù)、定義激活函數(shù)及其導(dǎo)數(shù)、實現(xiàn)前向傳播、計算損失函數(shù)、以及實現(xiàn)
    的頭像 發(fā)表于 07-11 16:30 ?1283次閱讀

    python 學(xué)習(xí):在內(nèi)網(wǎng)中 python庫-numpy 安裝方法,升級pip3版本的指令

    指令格式如下:先下載numpy庫到C盤具體位置 手動安裝指令如下: pip install c:\\\\users\\\\sesa738142
    發(fā)表于 04-22 17:18

    陀螺儀x和y的應(yīng)用

    陀螺儀是一種用于測量和感應(yīng)物體旋轉(zhuǎn)和轉(zhuǎn)動的設(shè)備,它通常由三個組成:x、y和z。在陀螺儀中,x和y
    發(fā)表于 04-17 15:42 ?0次下載

    基于NumPy的機(jī)器學(xué)習(xí)算法實現(xiàn)

    David Bourgin 表示他一直在慢慢寫或收集不同模型與模塊的純 NumPy 實現(xiàn),它們跑起來可能沒那么快,但是模型的具體過程一定足夠直觀。每當(dāng)我們想了解模型 API 背后的實現(xiàn),卻又不想看復(fù)雜的框架代碼,那么它可以作為快速的參考。
    發(fā)表于 01-17 12:36 ?168次閱讀
    基于<b class='flag-5'>NumPy</b>的機(jī)器學(xué)習(xí)算法實現(xiàn)

    陀螺儀x和y比例是多少 陀螺儀x和y是指什么

    陀螺儀是一種用于測量和感應(yīng)物體旋轉(zhuǎn)和轉(zhuǎn)動的設(shè)備,它通常由三個組成:x、y和z。在陀螺儀中,x和y
    的頭像 發(fā)表于 01-17 11:10 ?1622次閱讀

    陀螺儀三區(qū)別

    陀螺儀是一種用于測量物體旋轉(zhuǎn)的裝置,尤其在航空航天領(lǐng)域和導(dǎo)航應(yīng)用中得到廣泛應(yīng)用。陀螺儀根據(jù)其測量的數(shù)可以分為三陀螺儀和六陀螺儀。在本文中,我們將詳細(xì)討論三陀螺儀和六
    的頭像 發(fā)表于 01-02 14:22 ?3081次閱讀

    修復(fù)磨損的方法

    修復(fù)磨損的方法
    發(fā)表于 01-02 11:16 ?0次下載

    為什么要將電流分解為q和d呢?

    為什么要將電流分解為q和d呢? 將電流分解為q和d是為了更好地控制交流電機(jī)。交流電機(jī)是一種常見的電動機(jī),常用于家用電器、工業(yè)機(jī)械等領(lǐng)域。通過將電流分解為q
    的頭像 發(fā)表于 12-19 11:22 ?2412次閱讀

    M7130型臥矩臺平面磨床電路運行原理詳解

    M7130型臥矩臺平面磨床電路運行原理詳解
    的頭像 發(fā)表于 12-05 16:35 ?1564次閱讀
    M7130型臥<b class='flag-5'>軸</b>矩臺平面磨床電路運行原理<b class='flag-5'>詳解</b>

    詳解汽車LED的應(yīng)用和封裝

    詳解汽車LED的應(yīng)用和封裝
    的頭像 發(fā)表于 12-04 10:04 ?419次閱讀
    <b class='flag-5'>詳解</b>汽車LED的應(yīng)用和封裝

    永磁同步電機(jī)的q、d電感是什么概念?

    永磁同步電機(jī)的q、d電感是什么概念? 這兩個電感是如何測算的? 永磁同步電機(jī)中IPM與SPM有什么差別? 他們各自的特點是? 謝謝大家!
    發(fā)表于 11-13 06:38

    List和Numpy Array有什么區(qū)別

    Numpy 是Python科學(xué)計算的一個核心模塊。它提供了非常高效的數(shù)組對象,以及用于處理這些數(shù)組對象的工具。一個Numpy數(shù)組由許多值組成,所有值的類型是相同的。 Python的核心庫提供了
    的頭像 發(fā)表于 10-30 10:49 ?649次閱讀
    List和<b class='flag-5'>Numpy</b> Array有什么區(qū)別

    什么是電流?了解電流的危害與防范

    什么是電流?了解電流的危害與防范 電流是在旋轉(zhuǎn)設(shè)備中出現(xiàn)的一種電流形式,通常在工業(yè)設(shè)備中出現(xiàn),如電機(jī)、發(fā)電機(jī)和輪軸,當(dāng)這些設(shè)備旋轉(zhuǎn)時,電流會在它們的軸向產(chǎn)生。如果不適當(dāng)?shù)靥幚?/div>
    的頭像 發(fā)表于 10-30 10:11 ?2141次閱讀