首先就是大腸包小腸,這就是軸的概念,除了這個還真的沒有什么別的想法。
最近用numpy,越用這個東西越發現一些基礎概念不明朗,這里簡單的記錄一下。

先生成一個三維的數組

打印出來的樣子

從內最小的開始看起,分別是元素,2,3,4
以小[]來界定

也就是說,首先是一個特別大的整體,一個數組,接著是里面4個小數組,每一個小數組里面有3個小數組,小數組內的單元是一個數對來構成的。
其實這就是軸的概念,只是因為是扁平化的,不直觀。
axis=2
axis=1
axis=0

按照順序來填充

按照數組0軸來相加

就是加的這個位置的元素
[[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]]

再看一個

就是這樣吧
[[ 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]]

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

其中第一軸是最大的稱為0號,
其次開始從左到右依次的放置
NumPy數組的維數稱為秩(rank),一維數組的秩為1,二維數組的秩為2,以此類推。在NumPy中,每一個線性的數組稱為是一個軸(axes),秩其實是描述軸的數量。比如說,二維數組相當于是兩個一維數組,其中第一個一維數組中每個元素又是一個一維數組。所以一維數組就是NumPy中的軸(axes),第一個軸相當于是底層數組,第二個軸是底層數組里的數組。而軸的數量——秩,就是數組的維數。
NumPy的數組中比較重要ndarray對象屬性有:
1.ndarray.ndim:數組的維數(即數組軸的個數),等于秩。最常見的為二維數組(矩陣)。
2.ndarray.shape:數組的維度。為一個表示數組在每個維度上大小的整數元組。例如二維數組中,表示數組的“行數”和“列數”。ndarray.shape返回一個元組,這個元組的長度就是維度的數目,即ndim屬性。
3.ndarray.size:數組元素的總個數,等于shape屬性中元組元素的乘積。
4.ndarray.dtype:表示數組中元素類型的對象,可使用標準的Python類型創建或指定dtype。另外也可使用前一篇文章中介紹的NumPy提供的數據類型。
5.ndarray.itemsize:數組中每個元素的字節大小。例如,一個元素類型為float64的數組itemsiz屬性值為8(float64占用64個bits,每個字節長度為8,所以64/8,占用8個字節),又如,一個元素類型為complex32的數組item屬性為4(32/8)。
6.ndarray.data:包含實際數組元素的緩沖區,由于一般通過數組的索引獲取元素,所以通常不需要使用這個屬性。
其實進一步的,是闡述了一種方向的問題:在二維數組中axis=0是按列的,axis=1意味著按行。

這個圖太漂亮了
事實上,到這里的時候還是沒有說明白主要的軸到底是怎么出來的,那繼續。

軸是行列的方向
如果是多維的數組,那axis=0就是向下的軸,axis=1是往右延的軸。
這些東西影響著你未來作用到上面的函數,該算哪些東西。而且進行計算的時候是會進行折疊,就是從這些指定的位置采用運算規律。

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

axis=0的拼接方式

axis=1,橫向拼接
結論:將NumPy軸視為我們可以執行操作的方向。
接下來再補充一些,別的理解,盡量我們一篇文章解決這個問題。

這個也是

這個圖是讓我喜歡的不行,它清楚的展示了這個數組軸的包含關系

數組之間的算數關系

運算緊湊,使用了非動態的特性

使用Python的列表語法可以輕松的創建一個數組,要確保元素都一致

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

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

提供了完整的生成函數

可以使用單調序列初始化數組

arange對浮點不太友好

隨機數組也可以生成,這個太常見了
生成完成了,下一個階段就是取數了;

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

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

還有專有的函數,大規模的進行取數操作

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

浮點也OJBK

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

這是內積和叉積

三角函數不能少

四舍五入的操作也有

關于統計的功能也有

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

隨機矩陣也是經常要用的

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

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

@計算矩陣的乘積

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

先簡單點,規模一樣

這個就不一樣了

這就是廣播,先是維數的調整,兩個維數一致,接著調整內部的參數

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

轉置

數組重構

互相之間的轉換圖,這個要記住

拼接操作,我也寫過

也是拼接

拆分

tile復雜黏貼,repeat是分頁打印

這個是可以刪除對應的行列,這不就是白給

插入操作

邊界添加常數,就好像鑲邊一樣
下面的內容有趣:

創建這樣的東西,C和Python的做法是這樣的

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

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

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

返回索引,其實就是坐標,有時位置是很重要的

all和any就是有沒有的問題

三維的接下來會說

至于形狀怎么樣,會看你的約定。
接下來再加點東西,也不知道有沒有人能看到這里。

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

這個圖沒什么用,我就是覺得好看
審核編輯 :李倩
-
元素
+關注
關注
0文章
47瀏覽量
8762 -
數據類型
+關注
關注
0文章
237瀏覽量
14185 -
數組
+關注
關注
1文章
420瀏覽量
27358
原文標題:Numpy詳解-軸的概念
文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
六軸驅動,如何一步到位?TMCM-6214 的多軸控制!
多軸陀螺儀怎么選?
四軸無人機是如何工作的?
Hudi系列:Hudi核心概念之索引(Indexs)
Hudi系列:Hudi核心概念之文件布局(Storage Layouts)
邊聊安全 | 以L3級自動駕駛為例,詳解DDT、DDT Fallback、MRC、MRM概念
GraniStudio:單軸Jog運動例程
GraniStudio:獲取軸信息例程
GraniStudio:控制軸設置例程
GraniStudio:軸復位例程
GraniStudio零代碼平臺軸復位算子支持多少個軸同時復位,有哪些回零模式?
鴻蒙應用px,vp,fp概念詳解
【HarmonyOS 5】鴻蒙中的UIAbility詳解(三)
電機為什么會產生軸電流?
Numpy詳解-軸的概念
評論