導航:首頁 > 編程語言 > python中的numpy入門教程

python中的numpy入門教程

發布時間:2023-08-26 17:44:04

python——ndarray多維數組基本操作(1)

數組允許進行批量操作而無需使用for循環,因此更加簡便,這種特性也被稱為向量化。任何兩個等尺寸之間的算術操作都應用逐元素操作的方式進行。

同尺度數組之間的比較,會產生一個布爾型數組。

上述操作均是在同尺度數組之間進行的,對於不同尺度數組間的操作,會使用到廣播特性。

索引:獲取數組中特定位置元素的過程;
切片:獲取數組元素子集的過程。

new_a = a.astype(new_type)

astype()方法一定會創建新的數組(原始數據的一個拷貝),即使兩個類型一致。

ls = a.tolist()

轉置是一種特殊的數據重組形式,可以返回底層數據的視圖而不需要復制任何內容。
數組擁有 transpose 方法,也有特殊的 T 屬性。

對於更高緯度的數組, transpose 方法可以接受包含軸編號的元組,用於轉置軸。

ndarray的 swapaxes 方法,通過接受一對軸編號作為參數,並對軸進行調整用於重組數據。
swapaxes 方法返回的是數據的視圖,而沒有對數據進行復制。

Reference:
《Python for Data Analysis:Data Wrangling with Pandas,Numpy,and IPython》

❷ Python科學計算包numpy用法


本文實例講述了Python科學計算包numpy用法。分享給大家供大家參考,具體如下:
1 數據結構
numpy使用一種稱為ndarray的類戚亂似Matlab的矩陣式數據結構管理數據,比python的列表和標准庫的array類更為強大,處理數據更為方便。
1.1 數組的生成
在numpy中,生成數組需要指定數據類型,默認是int32,即整數,可以通過dtype參數來指定,一般用到的有int32、bool、float32、uint32、complex,分別代旦念表整數、布爾值、浮模仔困點型、無符號整數和復數
一般而言,生成數組的方法有這么幾種:
以list列表為參數生成(用tolist方法即可轉換回list):
?
1
234
5
In[
3
]: a
=
array([
1
,
2
,
3
])
In[
4
]: a
Out[
4
]: array([
1
,
2
,
3
])
In[
5
]: a.tolist()
Out[
5
]: [
1
,
❸ python基礎之numpy.reshape詳解

這個方法是在不改變數據內容的情況下,改變一個數組的格式,參數及返回值,官網介紹:

a:數組--需要處理的數據

newshape:新的格式--整數或整數數組,如(2,3)表示2行3列,新的形狀應該與原來的形狀兼容,即行數和列數相乘後等於a中元素的數量

order:

 首先做出翻譯: order  : 可選范圍為{『C』, 『F』, 『A』}。使用索引順序讀取a的元素,並按照索引順序將元素放到變換後的的數組中。如果不進行order參數的設置,默認參數為C。

(1)「C」指的是用類C寫的讀/索引順序的元素,最後一個維度變化最快,第一個維度變化最慢。以二維數組為例,簡單來講就是橫著讀,橫著寫,優先讀/寫一行。

(2)「F」是指用FORTRAN類索引順序讀/寫元素,最後一個維度變化最慢,第一個維度變化最快。豎著讀,豎著寫,優先讀/寫一列。注意,「C」和「F」選項不考慮底層數組的內存布局,只引用索引的順序。

(3)「A」選項所生成的數組的效果與原數組a的數據存儲方式有關,如果數據是按照FORTRAN存儲的話,它的生成效果與」F「相同,否則與「C」相同。這里可能聽起來有點模糊,下面會給出示例。

二、示例解釋

1、首先隨機生成一個4行3列的數組

2、使用reshape,這里有兩種使用方法,可以使用np.reshape(r,(-1,1),order='F'),也可以使用r1=r.reshape((-1,1),order='F'),這里我選擇使用第二種方法。通過示例可以觀察不同的order參數效果。

通過例子可以看出來,F是優先對列信息進行操作,而C是優先行信息操作。如果未對r的格式進行設置,那麼我們rashape的時候以「A」的順序進行order的話,它的效果和「C」相同。

3、我們將r的存儲方式進行修改,修改為類Fortan的方式進行存儲。並做與第2步類似的操作。

基礎操作樣例:

1.引入numpy,名稱為np 

2.接下來創建一個數組a,可以看到這是一個一維的數組 

3.使用reshape()方法來更改數組的形狀,可以看到看數組d成為了一個二維數組

4.通過reshape生成的新數組和原始數組公用一個內存,也就是說,假如更改一個數組的元素,另一個數組也將發生改變 

5.同理還可以得到一個三維數組 

reshape(-1,1)什麼意思:

大意是說,數組新的shape屬性應該要與原來的配套,如果等於-1的話,那麼Numpy會根據剩下的維度計算出數組的另外一個shape屬性值。

舉例:

同理,只給定行數,newshape等於-1,Numpy也可以自動計算出新數組的列數。

❹ Python基礎 numpy中的常見函數有哪些

有些Python小白對numpy中的常見函數不太了解,今天小編就整理出來分享給大家。

Numpy是Python的一個科學計算的庫,提供了矩陣運算的功能,其一般與Scipy、matplotlib一起使用。其實,list已經提供了類似於矩陣的表示形式,不過numpy為我們提供了更多的函數。

數組常用函數
1.where()按條件返回數組的索引值
2.take(a,index)從數組a中按照索引index取值
3.linspace(a,b,N)返回一個在(a,b)范圍內均勻分布的數組,元素個數為N個
4.a.fill()將數組的所有元素以指定的值填充
5.diff(a)返回數組a相鄰元素的差值構成的數組
6.sign(a)返回數組a的每個元素的正負符號
7.piecewise(a,[condlist],[funclist])數組a根據布爾型條件condlist返回對應元素結果
8.a.argmax(),a.argmin()返回a最大、最小元素的索引

改變數組維度
a.ravel(),a.flatten():將數組a展平成一維數組
a.shape=(m,n),a.reshape(m,n):將數組a轉換成m*n維數組
a.transpose,a.T轉置數組a

數組組合
1.hstack((a,b)),concatenate((a,b),axis=1)將數組a,b沿水平方向組合
2.vstack((a,b)),concatenate((a,b),axis=0)將數組a,b沿豎直方向組合
3.row_stack((a,b))將數組a,b按行方向組合
4.column_stack((a,b))將數組a,b按列方向組合

數組分割
1.split(a,n,axis=0),vsplit(a,n)將數組a沿垂直方向分割成n個數組
2.split(a,n,axis=1),hsplit(a,n)將數組a沿水平方向分割成n個數組

數組修剪和壓縮
1.a.clip(m,n)設置數組a的范圍為(m,n),數組中大於n的元素設定為n,小於m的元素設定為m
2.a.compress()返回根據給定條件篩選後的數組

數組屬性
1.a.dtype數組a的數據類型
2.a.shape數組a的維度
3.a.ndim數組a的維數
4.a.size數組a所含元素的總個數
5.a.itemsize數組a的元素在內存中所佔的位元組數
6.a.nbytes整個數組a所佔的內存空間7.a.astype(int)轉換a數組的類型為int型

數組計算
1.average(a,weights=v)對數組a以權重v進行加權平均
2.mean(a),max(a),min(a),middle(a),var(a),std(a)數組a的均值、最大值、最小值、中位數、方差、標准差
3.a.prod()數組a的所有元素的乘積
4.a.cumprod()數組a的元素的累積乘積
5.cov(a,b),corrcoef(a,b)數組a和b的協方差、相關系數
6.a.diagonal()查看矩陣a對角線上的元素7.a.trace()計算矩陣a的跡,即對角線元素之和

以上就是numpy中的常見函數。更多Python學習推薦:PyThon學習網教學中心。

❺ python數據分析模塊:numpy、pandas全解


一維數組情況:

二維數組情況:

3參數情況:

2參數情況:

1參數情況:

一維情況:

二維情況:

一維情況:

二維情況:

一維情況:

二維情況:第三個參數指定維度

只查看行數、或者列數

逗號隔開兩個索引

某些行

某些列

可以看出append()函數在二維數組中添加元素,結果轉為了一維數組。

那怎麼保持二維數組呢?可以設置axis參數按行或者按列添加

可以看出先把二維數組降成了一維數組,再在索引為1的位置添加元素。

那麼怎麼保持在二維添加元素呢? 同樣設置axis參數

也分按行和按列刪除

標記缺失值: isnan()函數

補充缺失值:

同樣axis參數可以指定拼接按行還是按列

2. hstack()函數:以水平堆疊的方式拼接數組

3. vstack()函數:以垂直堆疊的方式拼接數組

第二個參數還可以是數組,指定拆分的位置

hsplit()函數:橫向拆成幾個數組

vsplit()函數:縱向拆成幾個數組

數組與數組之間的運算

數組與數值的運算

可以指定整個數組求和,還是按行或者按列

axis=0:每一列的元素求和

axis=1:每一行的元素求和

axis=0:每一列求均值

axis=1:每一行求均值

axis=0:每一列求最大值

axis=1:每一行求最大值

pandas有兩個重要的數據結構對象:Series和DataFrame。

Series是創建一個一維數組對象,會自動生成行標簽。

會自動生成行列標簽

也可以用字典形式生成數據

在用字典生成數據的基礎上,同時指定行標簽

例如對下表的數據進行讀取

4月是第四個表,我們應把sheet_name參數指定為3;因為索引是從0開始的。

可以看出read_excel()函數自動創建了一個DataFrame對象,同時自動把第一行數據當做列標簽。

可以看出不給出header參數時,該參數默認為0。

header=1時結果如下:

header=None時結果如下:

index_col=0時,第0列為列標簽

index_col=0時

usecols=[2]:指定第二列

指定多列

數據如下:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-j1SHxY8y-1637655972909)(C: ypora-user-imagesimage-20211114192949607.png)]

nrows=3時

head()函數中參數為空默認前5行

指定head(3)時如下

numpy模塊也是shape

查看特定列的書庫類型

特定列數據類型轉換

先查看一下所有數據

與單行相比,結果顯示的格式不一樣了

iloc()挑選:

或者給出區間

挑選數據要麼標簽,要麼索引挑選

或者

或者寫成區間

標簽挑選

或者索引挑選

先查看一下數據

或者用字典一對一修改

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-a6QKIoie-1637655972912)(C: ypora-user-imagesimage-20211123110431201.png)]

isin()函數查看錶中是否有該值

查看特定列是否有該值

可以看出上述代碼並沒有替換,那怎麼替換呢?

末尾插入一列

指定插入到哪列

axis參數可以指定刪除行還是刪除列

指定標簽刪除

指定索引刪除

方法三

指定行標簽刪除

指定索引刪除

方法三:

先查看所有數據

info()函數查看數據類型,還可以查看是否有缺失值

isnull()函數查看是否有缺失值

在numpy模塊中用isnan()函數

刪除有缺失值的行

刪除整行都為缺失值的行: 需要指定how參數

不同列的缺失值設置不同的填充值

默認保留第一個重復值所在的行,刪除其他重復值所在的行

保留第一個重復值所在的行

保留最後一個重復值所在的行

是重復的就刪除

降序如下

參數指定first時,表示在數據有重復值時,越先出現的數據排名越靠前

獲取產品為單肩包的行數據

獲取數量>60的行數據

獲取產品為單肩包 且 數量>60 的行數據

獲取產品為單肩包 或 數量>60 的行數據

stack()函數轉換成樹形結構

how參數指定外連接

on參數指定按哪一列合並

concat()函數採用 全連接 的方式,沒有的數設置為缺失值

重置行標簽

效果與concat()一樣

末尾添加行元素

指定列求和

指定列求均值

指定列求最值

獲取單列的

corr()函數獲取相關系數

獲取指定列與其他列的相關系數

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-46g9qgQw-1637655972913)(C: ypora-user-imagesimage-20211123135643804.png)]

groupby()函數返回的是一個DataFrameBy對象,該對象包含分組後的數據,但是不能直觀地顯示出來。

分組後獲取指定列的匯總情況

獲取多列的匯總情況

獲取多列的情況

ta = pd.read_excel(『相關性分析.xlsx』)

print(data)

corr()函數獲取相關系數

獲取指定列與其他列的相關系數

[外鏈圖片轉存中…(img-46g9qgQw-1637655972913)]

groupby()函數返回的是一個DataFrameBy對象,該對象包含分組後的數據,但是不能直觀地顯示出來。

分組後獲取指定列的匯總情況

獲取多列的匯總情況

獲取多列的情況






❻ python自帶及pandas、numpy數據結構(一)

1.python自帶數據結構:序列(如list)、映射(如字典)、集合(set)。
以下只介紹序列中的list:
創建list:
list1 = []
list1 = [1,2,3,4,5,6,7,8,9] #逗號隔開
list2 = [[1,2],[3,4],[5,6],[7,8]] #list2長度(len(list2))為2,list2[0] = [1,2]
liststring = list(「thisisalist」) #只用於創建字元串列表
索引list:
e = list1[0] #下標從零開始,用中括弧
分片list:
es = list1[0:3]
es = list1[0:9:2] #步長在第二個冒號後
list拼接(list1.append(obj)、加運算及乘運算):

list長度:

list每個元素乘一個數值:
list2 = numpy.dot(list2,2)
list類似矩陣相乘(每個元素對應相乘取和):
list3 = numpy.dot(list1,list1)
#要求相乘的兩個list長度相同
list3 = numpy.dot(list2,list22)
#要求numpy.shape(list2)和numpy.shape(list22)滿足「左行等於右列」的矩陣相乘條件,相乘結果numpy.shape(list3)滿足「左列右行」

2.numpy數據結構:

Array:
產生array:
data=np.array([[1, 9, 6], [2, 8, 5], [3, 7, 4]])
data=np.array(list1)
data1 = np.zeros(5) #data1.shape = (5,),5列
data1 = np.eye(5)
索引array:
datacut = data[0,2] #取第零行第二列,此處是6
切片array:
datacut = data[0:2,2] # array([6, 5])
array長度:
data.shape
data.size
np.shape(data)
np.size(data)
len(data)
array拼接:
#括弧內也有一個括弧(中括弧或者小括弧)!
d = np.concatenate((data,data))
d = np.concatenate((data,data),axis = 1) #對應行拼接
array加法:逐個相加
array乘法:
d = data data #逐個相乘
d = np.dot(data,data) #矩陣相乘
d = data
3 #每個元素乘3
d = np.dot(data,3) #每個元素乘3
array矩陣運算:
取逆 : np.linalg.inv(data)
轉置:data.T
所有元素求和 : np.sum(data)
生成隨機數:np.random.normal(loc=0, scale=10, size=None)
生成標准正態分布隨機數組:np.random.normal(size=(4,4))
生成二維隨機數組:
np.random.multivariate_normal([0,0],np.eye(2))
生成范圍在0到1之間的隨機矩陣(M,N):
np.random.randint(0,2,(M,N))

Matrix:
創建matrix:
mat1 = np.mat([[1, 2, 3], [4, 5, 6]])
mat1 = np.mat(list)
mat1 = np.mat(data)
matrix是二維的,所有+,-,*都是矩陣操作。
matrix索引和分列:
mat1[0:2,1]
matrix轉置:
np.transpose(mat1)
mat1.transpose()
matrix拼接:
np.concatenate([mat1,mat1])
np.concatenate([mat1,mat1],axis = 1)

numpy數據結構總結:對於numpy中的數據結構的操作方法基本相同:
創建:np.mat(list),np.array(list)
矩陣乘:np.dot(x,y)
轉置:x.T or np.transpose(x)
拼接:np.concatenate([x,y],axis = 1)
索引:mat[0:1,4],ary[0:1,4]

3.pandas數據結構:
Series:
創建series:
s = pd.Series([[1,2,3],[4,5,6]],index = [『a』,『b』])
索引series:
s1 = s[『b』]
拼接series:
pd.concat([s1,s1],axis = 1) #也可使用s.append(s)

DataFrame:
創建DaraFrame:
df = pd.DataFrame([[1,2,3],[1,2,3]],index = ['a','b'],columns = ['x','y','z'])
df取某一列:
dfc1 =df.x
dfc1 = df[『x』]
dfc2 = df.iloc[:,0] #用.iloc方括弧里是數字而不是column名!
dfc2 = df.iloc[:,0:3]
df取某一行:
dfr1 = df.iloc[0]
df1 = df.iloc[0:2]
df1 = df[0:2] #這種方法只能用於取一個區間
df取某個值:
dfc2 = df.iloc[0,0]
dfc2 = df.iloc[0:2,0:3]

與python中的numpy入門教程相關的資料

熱點內容
畫聖誕樹用什麼軟體python 瀏覽:450
vba文件夾做變數代碼 瀏覽:435
普信app為什麼用不了 瀏覽:256
linux查找rpm包 瀏覽:114
怎麼把安卓手機繁體字改為現代字 瀏覽:896
pdf簽名如何刪除 瀏覽:410
按摩解壓腿部足部 瀏覽:293
app切圖用什麼軟體 瀏覽:5
訂購命令英語 瀏覽:661
java正則網址 瀏覽:779
程序員上班可不可以自學 瀏覽:430
空調壓縮機排空氣視頻 瀏覽:285
centos72nginxphp 瀏覽:186
游戲平台用什麼伺服器好 瀏覽:756
保密櫃里的圖片是加密文件嗎 瀏覽:911
php判斷最後一個字元 瀏覽:637
pdf腦區 瀏覽:635
at命令已棄用 瀏覽:492
買點賣出指標源碼 瀏覽:614
36位單片機 瀏覽:432