Numpy ndarray 多維陣列物件的使用

2022-10-03 16:27:07 字數 2468 閱讀 6605

目前它是python數值計算中最為重要的基礎包,將numpy的陣列的物件作為資料互動的通用語,一般我們要充分理解好矩陣計算的原理,這需要你要有一些線性代數的基礎知識。在對資料處理、清洗、構造子集、過濾、變換以及其他計算的過程快速的進行向量化計算,後續也會介紹r語言,因為r語言就是乙個原生態基於向量化計算的程式語言。

numpy的核心特徵之一就是乙個n維陣列物件——ndarray,這是乙個快速靈活的大型資料集容器,可以進行科學數值計算。

import numpy as np

匯入好包之後,我們隨機生成乙個2*3的陣列,2行3列的隨機數組

data=np.random.randn(2,3)

對陣列的簡單操作

data*10

>>array([[ 9www.cppcns.com.00839244, -17.67421607, -0.03125454],

[ 19.79906711, -2.6214www.cppcns.com5167, -12.55106031]])

data+data

>>array([[ 1.80167849, -3.53484321, -0.00625091],

[ 3.95981342, -0.52429033, -2.51021206]])

data.shape

>>(2, 3)

data.dtype

>>dtype('float64')

生成陣列的最簡單的方法就是使用array函式,對於傳入的型別可以是其他任意的序列,如你傳入乙個列表,那麼它就會接收這個列表並轉換為陣列型別,如果傳入的是多個列表那麼它就會接收多個,**性代數裡面我們叫這個是維度,比如下面的就是乙個2行3列的矩陣。

data1=[[1,2,3],[4,5,6]]

arry1=np.array(data1)

arry1

>>array([[1, 2, 3],

[4, 5, 6]])

arry1.ndim

>>2

arry1.shape

>>2, 3)

除了這個我們還可以使用其他的函式來建立陣列,比如給定了長度和形狀型別就會一次性建立完畢,這裡是建立了乙個2*3的元素是1的陣列

np.ones((2,3))

>>array([[1., 1., 1.],

[1., 1., 1.]])

numpy裡面也有像python range()函式一樣的效果——np.arange(),操作效果和python的range函式有異曲同工之妙,start,stop,step都是可設定的。

對角矩陣生成

如何檢視陣列的資料型別以及如何進行轉換,在numpy裡面整型:int32,浮點型:float64.

基於numpy的陣列計算在之前我也演示了一些,四則運算,加減乘除,以及一些陣列運算,每乙個陣列與陣列之間的計算都是元素相互對於的,並不是獨立的,這個是我們需要理解清楚的地方,有趣的是,我們需要比較兩個相同維數的陣列, < = 來檢視,它返回的是布林值。

在一維的陣列裡面,和python列表裡面的所有一樣,如果是高維的就有所不同了,就需要利用多重索引了,這裡的變數和上面的一樣

如果產生了乙個三位的陣列,比如乙個2*2*3的陣列,我們按照索引,可以自動索引出來第乙個的的陣列

對於高維的陣列的切片,我們需要注意的是,它的切片原理是按照陣列裡面的陣列進行切片的,比如乙個二維陣列(2*3*2)的,我們需要取出每個單位陣列裡面的第乙個元素,我們應該如何做

很明顯的我們可以看出多維陣列的切片特點:我這裡抽象化為列表的特點來解釋,比如我們可以把多維陣列看做是乙個列表裡面的多個列表,也就是巢狀列表,然後我們按照索引來取,上述例子就是首先取出兩個大的陣列,然後從這個兩個大的陣列裡面再去前兩個陣列,最後取出索引為0的元素程式設計客棧,這樣層層遞減,一步一步的索引是numpy索引的特點,之所以大資料技術之分析與計算,要用到矩陣計算的優化,就是**於它的分而治之的原理和特點。

其實就是對陣列裡面的值或元素進行比較,之中返回布林值即可

上述例子就是產生了乙個一維的字串的陣列,然後我們通過比較得出布林值來獲取data的值,自然就獲取到data[0]的陣列啦

注意在python裡面我們可以用and or來判斷,在numpy裡面我們需要&(and)|(or)來解決你的需求,記住喲

我們需要索引出不同位置的陣列,這個時候我們還在乙個乙個的取出來嗎,當然不是我們可以利用特殊的索引來解決這個問題,比如下面的例子

下面我們來看看這個特殊索引的其他的用法

第一步我們我們按照索引取出對角線的元素,第二的乙個我們想要得到乙個二維的陣列,我們取出乙個大陣列裡面索引位置分別為:1 5 7 2的一維陣列然後我們利用索引位置的調換,把元素重新的進行了排序。

我們隨機生成乙個0-15的元素組成3*5的乙個陣列,然後利用.t屬性,如果學過線性代數的小夥伴一定對這個不陌生,矩陣的轉置:把行變成列,把列變成行。

在numpy的陣列操作我們現在其實並沒有發現這個對我們的資料分析有什麼用處,這個很正常。就像我們之前學習線性代數,我們發現這個矩陣對我們並沒什麼用,但是當你使用matlab的時候才發現「書到用時方恨少」的道理。

Numpy ndarray 多維陣列物件

numpy 最核心的特徵之一就是n維陣列物件 ndarray,它是python中乙個快速,靈活的資料集容器。陣列允許在整塊資料上進行數 算。比如利用矩陣來計算就比普通的運算快的多的多 首先我匯入乙個numpy,再生成乙個隨機數組 import numpy as np data np.random.r...

numpy ndarray掩碼操作

bool掩碼 掩出位置為true處的值 從大資料集中抽取出一小部分 e.g.抽取年齡大於40歲的學生 import numpy as np a np.arange 1,10 設定掩碼 mask true false true false true false true false true fals...

認識Numpy Ndarray物件

numpy numerical python 是 python 語言的乙個擴充套件程式庫,支援大量的維度陣列與矩陣運算,此外也針對陣列運算提供大量的數學函式庫。numpy為什麼能夠受到各個資料科學從業人員的青睞與追捧,其實很大程度上是因為numpy在向量計算方面做了很多優化,介面也非常友好。而這些其...