目錄
Numpy基礎
介紹
代碼操作
生成ndarray
ndarray的資料型別
Numpy 陣列計算
基礎索引和切片
布爾索引
特殊索引
陣列的轉換和換軸
總結
每文一語
Numpy基礎
介紹
目前它是Python數值計算中最為重要的基礎包,將numpy的陣列的物件作為資料互動的通用語,一般我們要充分理解好矩陣計算的原理,這需要你要有一些線性代數的基礎知識,在對資料處理、清洗、構造子集、過濾、變換以及其他計算的程序快速的進行向量化計算,后續也會介紹R語言,因為R語言就是一個原生態基于向量化計算的編程語言,
Numpy的核心特征之一就是一個N維陣列物件——ndarray,這是一個快速靈活的大型資料集容器,可以進行科學數值計算,
代碼操作
import numpy as np
匯入好包之后,我們隨機生成一個2*3的陣列,2行3列的隨機陣列
data=np.random.randn(2,3)

對陣列的簡單操作
data*10
>>array([[ 9.00839244, -17.67421607, -0.03125454],
[ 19.79906711, -2.62145167, -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')
生成ndarray
生成陣列的最簡單的方法就是使用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都是可設定的,

對角矩陣生成

ndarray的資料型別
如何查看陣列的資料型別以及如何進行轉換,在numpy里面整型:int32,浮點型:float64.

Numpy 陣列計算
基于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的時候才發現“書到用時方恨少”的道理,
每文一語
穹鷹嗷鳴雖遮日,渺雀無迎但現身,
滿目山河空念遠,不如憐取眼前人,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/258436.html
標籤:python
