numpy 介紹和基礎使用詳解

2022-03-09 19:13:50 字數 4395 閱讀 4005

numpy 提供了乙個在python中做科學計算的基礎庫,重在數值計算,主要用於處理多維陣列,用於儲存和處理大型矩陣,本身是由c語言開發,比python自身的列表結構要高效的多。

高效能科學計算和資料分析的基礎包,總結:

形狀

ndarray.shape

重新改變陣列形狀

ndarray.reshape(x_dim, y_dim, z_dim,…)

陣列的維度

ndarray.ndim

itemsize輸出array元素的位元組數

numpy.itemsize

nparray.shape:

#檢視陣列的形狀維度

d=np.arange(1,7,1

)print(d.shape)

(6,)

nparray.reshape:

#改變陣列的維度,規則1*6==2*3

d=d.reshape(2,3). #或者: d=np.reshape(d,(2,3

))print(d.shape)

(2, 3)

獲取陣列的維度,可使用len(nparray.shape),即元祖的維度,即numpy.itemsize

將多維陣列轉換為一維陣列方式:

自己動手:

def createonenp(nparray):

num=1

for i in

len(nparray.shape):

num=num*nparray.shape[i]

return nparray.reshape(num)

實際又是自己在造輪子,可使用np自帶方法:

nparray= nparray.flatten()

a=np.array([[1,2,3],[4,5,6

]])print(a)

a=a.flatten()

print(a)

[[1 2 3]

[4 5 6]]

[1 2 3 4 5 6]

a=np.array([i for i in range(1,7

)])#生產一維陣列

a=a.reshpe(2,3)

[[1 2 3]

[4 5 6]]

陣列可以直接與數字進行四則運算(+、-、*、/)

即陣列裡的每乙個值分別四則運算

print(a+2)
[[3 4 5]

[6 7 8]]

print(a/0)
[[inf inf inf]

[inf inf inf]]

在numpy中,/0並不會報錯,

inf(infimum)表示無窮,

nan(not a number)代表未定義或不可表示的值,

這裡要注意了,陣列和陣列的計算和矩陣是不同的

矩陣的乘積:

陣列的乘積:

相同的多維陣列或直接與單維度軸相同,可以直接四則運算:

生產一維陣列

a=a.reshpe(2,3)

[[1 2 3]

[4 5 6]]

[[1 4]

[2 5]

[3 6]]

[[1 4]

[2 5]

[3 6]]

[[1 4]

[2 5]

[3 6]]

a=np.array([i for i in range(1,10)])#

生產一維陣列

a=a.reshpe(3,3)

[[1 2 3]

[4 5 6]

[7 8 9]]

2.1.1、取第x行  

print(a[x])

print(a[1])
[4 5 6]

2.1.2、取多行

print(a[[x,x]])

print(a[[0,2]])#

取第一行和第三行

[[1 2 3]

[7 8 9]]

2.1.3、取連續多行

print(a[x:y:z]) #連續取從x行到y行,不包括y,間隔為z

print(a[0:3])#

取第一行到第四行不包括第四行,也就是前面三行,和list切片類似,左閉右開

[[1 2 3]

[4 5 6]

[7 8 9]]

print(a[0:3:2])
[[1 2 3]

[7 8 9]]

和取行類似

a[:,x]#取x列

a[:,x:y]#取下標為x到下標為y-1的列

a[:,x:y:z]#取下標為x到下標為y-1,間隔為z的列

a[:,[x,y]] #取下標為x,y的兩列

a[1,1]=a[1][1]

5

print(a[1:3,1:3])
[[5 6]

[8 9]]

a=np.array([i for i in range(1,10)])#

生產一維陣列

a=a.reshpe(3,3)

[[1 2 3]

[4 5 6]

[7 8 9]]

print(a>5)
[[false false false]

[false false  true]

[ true  true  true]]

print(a[a>5])
[6 7 8 9]

a[a>5]=5

print(a)

[[1 2 3]

[4 5 5]

[5 5 5]]

data1=np.where(a<5,1,9)#

比5小的全部修改為1,其他的改為9

print(data1)

[[1 1 1]

[1 9 9]

[9 9 9]]

裁剪

data2=a.clip(3,7)#

小於3的替換為3,大於7的替換為7

print(data2)

[[3 3 3]

[4 5 6]

[7 7 7]]

求和:nparray.sum(axis=none)

均值:nparray.mean(axis=none) 受離群點的影響較大

中值:np.median(nparray,axis=none)

最大值:nparray.max(axis=none)

最小值:nparray.min(axis=none)

極值:np.ptp(nparray,axis=none) 即最大值和最小值只差

標準差:nparray.std(axis=none)

np.argmax(nparray,axis=0)

np.argmin(nparray,axis=1)

[[0. 0. 0.]

[0. 0. 0.]

[0. 0. 0.]]

[[1. 1. 1.]

[1. 1. 1.]

[1. 1. 1.]]

[[1. 0. 0.]

[0. 1. 0.]

[0. 0. 1.]]

a=b 完全不複製,a和b相互影響

a = b[:],檢視的操作,一種切片,會建立新的物件a,但是a的資料完全由b保管,他們兩個的資料變化是一致的,

a = b.copy(),複製,a和b互不影響

p.p1

p.p2

span.s1

span.s2

span.s3

span.s4

Numpy 庫的簡單介紹和使用

python在處理資料時,會涉及到很多線性代數的運算,比如矩陣的計算,nump的存在,大大簡化了在使用python計算的複雜性,下面簡單介紹下numpy的一些基礎。numpy庫中存在兩種資料型別,陣列 ndarray 和矩陣 matrix 生成陣列 ndarray arr np.array 1,2,...

numpy介紹 基礎操作(6)

這次教程是對python的numpy這個包做乙個介紹 numpy是python用於分析資料,處理矩陣的乙個非常實用的包,下面我將會在jupyter notebook上,一步一步實現numpy這個包的各種用法,並配上說明。這一節我們要學習的是,生成矩陣。import numpy as np impor...

numpy陣列切片介紹及使用

1.在cmd輸入 pip install numpy 2.測試一下python c import numpy 沒有報錯就正常了 numpy 最重要的乙個特點是其 n 維陣列物件 ndarray,它是一系列同型別資料的集合,以 0 下標為開始進行集合中元素的索引。ndarray物件的內容可以通過索引或...