日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

numpy学习笔记(莫烦python)

發(fā)布時間:2025/3/13 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 numpy学习笔记(莫烦python) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

import numpy as np

numpy屬性

array = np.array([[1,2,3],[2,3,4]])

print(array)

print(‘number of dim’,array.ndim)

print(‘shape:’,array.shape)

print(‘size’,array.size)

numpy的創(chuàng)建array

創(chuàng)建數(shù)組

a = np.array([2,23,4])

print(a)

指定數(shù)據(jù)

a = np.array([2,23,4],dtype=np.int)

print(a.dtype)

a = np.array([2,23,4],dtype=np.int32)

print(a.dtype)

a = np.array([2,23,4],dtype=np.float)

print(a.dtype)

a = np.array([2,23,4],dtype=np.float32)

print(a.dtype)

創(chuàng)建特定的數(shù)據(jù)

矩陣

a = np.array([[2,23,4],[2,32,4]])

print(a)

全零數(shù)組

a = np.zeros((3,4))

print(a)

創(chuàng)建全一數(shù)組,同時指定這些特定數(shù)據(jù)的dtype

a = np.ones((3,4),dtype=np.int)
a

創(chuàng)建全空數(shù)組,其實每個值都是接近零的數(shù)

a = np.empty((3,4))
a

用arange創(chuàng)建連續(xù)數(shù)組

a = np.arange(10,20,2)
a

用reshape改變數(shù)據(jù)的形狀

a = np.arange(12).reshape((3,4))
a

用linspace創(chuàng)建線段型數(shù)據(jù)

a = np.linspace(1,10,20)
a

a = np.linspace(1,10,20).reshape((5,4))
a

Numpy基礎(chǔ)運(yùn)算1

import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)
a,b

numpy的幾種基本運(yùn)算

c=a-b
c

c=a+b
c

c=a*b
c

#乘方

c=b**2
c

數(shù)學(xué)工具,三角函數(shù)

c=10*np.sin(a)
c

除了函數(shù)應(yīng)用外,在腳本中對print函數(shù)進(jìn)行一些修改可以進(jìn)行邏輯判斷

print(b<3)

此時由于進(jìn)行邏輯判斷,

返回的是一個bool類型的矩陣,即對滿足要求的返回True,不滿足的返回False。

上述程序執(zhí)行后得到的結(jié)果是[True True True False]。 需要注意的是,

#如果想要執(zhí)行是否相等的判斷, 依然需要輸入 == 而不是 = 來完成相應(yīng)的邏輯判斷。

#上述運(yùn)算均是建立在一維矩陣,即只有一行的矩陣上面的計算,

如果我們想要對多行多維度的矩陣進(jìn)行操作,需要對開始的腳本進(jìn)行一些修改:

a = np.array([[1,1],[0,1]])
b = np.arange(4).reshape((2,2))

print(a)

print(b)

稍顯不同的是,Numpy中的矩陣乘法分為兩種,

#其一是前文中的對應(yīng)元素相乘,
#其二是標(biāo)準(zhǔn)的矩陣乘法運(yùn)算,
#即對應(yīng)行乘對應(yīng)列得到相應(yīng)元素:

矩陣乘法

c_dot = np.dot(a,b)

print(c_dot)

另一種dot的表示方法

c_dot_2 = a.dot(b)

print(c_dot_2)

sum(),min(),max()的使用

import numpy as np

a=np.random.random((2,4))

print(a)

np.sum(a)

np.min(a)

np.max(a)

查找運(yùn)算

如果你需要對行或者列進(jìn)行查找運(yùn)算,

就需要在上述代碼中為 axis 進(jìn)行賦值。

當(dāng)axis的值為0的時候,將會以列作為查找單元,

當(dāng)axis的值為1的時候,將會以行作為查找單元。

print(“a =”,a)

print(“sum =”,np.sum(a,axis=1))

print(“min =”, np.min(a,axis=0))

print(“max =”,np.max(a,axis=1))

numpy基礎(chǔ)運(yùn)算2

有關(guān)索引的運(yùn)算

import numpy as np
A = np.arange(2,14).reshape((3,4))

print(np.mean(A))
print(np.average(A))

模仿dot()的使用法則,mean()還有另一種寫法

print(A.mean())

同樣的,可以寫出求解中位數(shù)的函數(shù)

#print(A.median()) # 用不了?
np.median(A)

和matlab中的cumsum()累加函數(shù)類似,Numpy中也具有cumsum()函數(shù)

print(np.cumsum(A))

累差運(yùn)算的函數(shù)

print(np.diff(A))
#每一行中后一項與前一項之差。故一個3行4列矩陣通過函數(shù)計算得到的矩陣便是3行3列的矩陣。

nonzero()函數(shù)

print(np.nonzero(A))
#這個函數(shù)將所有非零元素的行與列坐標(biāo)分割開,重構(gòu)成兩個分別關(guān)于行和列的矩陣。

#wo們可以對所有元素進(jìn)行仿照列表一樣的排序操作,
#但這里的排序函數(shù)仍然僅針對每一行進(jìn)行從小到大排序操作:

import numpy as np
A = np.arange(14,2,-1).reshape((3,4))
print(A)

print(np.sort(A))

矩陣的轉(zhuǎn)置有兩種表示方法

print(np.transpose(A))

print(A.T)

特別的,numpy里面有clip()函數(shù),例子如下

print(A)

print(np.clip(A,5,9))

Numpy索引

一維索引

類似 a[2] 的索引方法

import numpy as np

A = np.arange(3,15)

print(A[3])

print(A[0])

此時我們將矩陣轉(zhuǎn)化成二維的,然后進(jìn)行同樣的操作

A = np.arange(3,15).reshape((3,4))

print(A[2])

此時對應(yīng)的實際上是矩陣A從第三行(從0開始算)開始的所有元素

二維索引

A = np.arange(3,15).reshape((3,4))
A

print(A[1][1])

其他表示方法

print(A[1,1])

在python的list中,我們可以利用 : 對一定范圍內(nèi)的元素進(jìn)行切片操作,

在numpy中我們依然可以給出相應(yīng)的方法

print(A[1,1:3])

這一表示形式即針對第二行中第2到第4列元素進(jìn)行切片輸出(不包含第4列)。

此時我們適當(dāng)?shù)睦胒or函數(shù)進(jìn)行打印

for row in A:
print(row)

此時他會逐行進(jìn)行打印操作

如果想逐列進(jìn)行打印,就需要稍微變化一下

for column in A.T:
print(column)

最后說一個關(guān)于逐代輸出的問題

import numpy as np

A = np.arange(3,15).reshape(3,4)

print(A.flatten())

for item in A.flat:
print(item)

#這一腳本中的flatten是一個展開性質(zhì)的函數(shù),將多維的矩陣進(jìn)行展開成1行的數(shù)列。

而flat是一個迭代器,本身是一個object屬性

numpy array合并

np.vstack() 上下合并

import numpy as np

A = np.array([1,1,1])
A

B = np.array([2,2,2])
B

print(np.vstack((A,B)))

#vertical stack本身屬于一種上下合并,即對括號中的兩個整體進(jìn)行對應(yīng)操作。此時我們對組合而成的矩陣進(jìn)行屬性探究:

C = np.vstack((A,B))

print(A.shape, C.shape)

np.hstack() 左右合并

D = np.hstack((A,B))

print(D)

print(A.shape,D.shape)

np.newaxis() 轉(zhuǎn)置操作

#說完了array的合并,
#我們稍稍提及一下前一節(jié)中轉(zhuǎn)置操作
#,如果面對如同前文所述的A序列,
#轉(zhuǎn)置操作便很有可能無法對其進(jìn)行轉(zhuǎn)置(因為A并不是矩陣的屬性),
#此時就需要我們借助其他的函數(shù)操作進(jìn)行轉(zhuǎn)置:

print(A[np.newaxis,:])

print(A[np.newaxis,:].shape)

print(A[:,np.newaxis])

print(A[:,np.newaxis].shape)

結(jié)合著上面的知識,我們把它綜合起來:

import numpy as np

A = np.array([1,1,1])[:,np.newaxis]
A

B = np.array([2,2,2])[:,np.newaxis]
B

C = np.vstack((A,B))
C

D = np.hstack((A,B))
D

print(D)

print(A.shape,D.shape)

np.concatenate() 合并多個矩陣或序列

#當(dāng)你的合并操作需要針對多個矩陣或序列時,借助concatenate函數(shù)可能會讓你使用起來比前述的函數(shù)更加方便:

C = np.concatenate((A,B,B,A),axis=0)
C

print?

D = np.concatenate((A,B,B,A),axis=1)
D

print(D)

#axis參數(shù)很好的控制了矩陣的縱向或是橫向打印,相比較vstack和hstack函數(shù)顯得更加方便。

Numpy array 分割

創(chuàng)建數(shù)據(jù)

import numpy as np

A = np.arange(12).reshape((3,4))

print(A)

縱向分割

print(np.split(A,2,axis=1))

C,D = np.split(A,2,axis=1)

C,D

橫向分割

print(np.split(A,3,axis=0))

錯誤的分割

范例的Array只有4列,只能等量對分,因此輸入一下程序代碼后python會報錯

print(np.split(A,3,axis=1))

為了解決這種情況,我們會有下面這種方式

不等量的分割

print(np.array_split(A,3,axis=1))

其他的分割方式

print(np.vsplit(A,3)) # #等于 print(np.split(A, 3, axis=0))

print(np.hsplit(A,2))

Numpy copy & deep copy

= 的賦值方式會帶有關(guān)聯(lián)性

首先import numpy 并建立變量,給變量賦值

import numpy as np

a = np.arange(4)

b = a

c = a

d = b

改變a的第一個值,b,c,d,的第一個值也會隨之改變

a[0]=11

print(a)

確定b, c, d, 與 a 是否相同

b is a

c is a

d is a

同樣,改變d的值,a,b,c也會改變

d[1:3] = [22,33]

print(a)

print(b)

print?

copy的賦值方式?jīng)]有關(guān)聯(lián)性

b = a.copy()

print(b)

a[2] = 44

print(a)

print(b)

總結(jié)

以上是生活随笔為你收集整理的numpy学习笔记(莫烦python)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。