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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python科学计算三剑客_1-python数据分析-数据分析介绍、数据分析三剑客之NumPy

發布時間:2023/12/10 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python科学计算三剑客_1-python数据分析-数据分析介绍、数据分析三剑客之NumPy 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據分析三劍客

numpy

pandas(重點)

matplotlib

numpy模塊

NumPy(Numerical Python) 是 Python 語言中做科學計算的基礎庫。側重在于數值計算,也是大部分Python科學計算庫的基礎,多用于在大型、多維數組上執行的數值運算。

重點

numpy數組的創建

numpy索引和切片

級聯

變形

矩陣的乘法和轉置

常見的聚合函數+統計

numpy的創建

使用np.array()創建

使用plt創建

使用np的routines函數創建

使用np.array()創建

#用array()創建一個一維數組

importnumpy as np

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

#使用array()創建一個多維數組

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

array([[1, 2, 3],

[4, 5, 6]])

數組和列表的區別是什么?

數組中存儲的數據元素類型必須是統一類型

優先級:

字符串 > 浮點型 > 整數

np.array([1.1,'哈哈',11]) #array(['1.1', '哈哈', '11'], dtype='

np.array([1,5,6.1,8]) #array([1. , 5. , 6.1, 8. ])

將外部的一張圖片讀取加載到numpy數組中,然后嘗試改變數組元素的數值查看對原始圖片的影響

importmatplotlib.pyplot as plt#imread可以返回一個numpy數組

img_arr = plt.imread('./1.jpg')#將返回的數組的數據進行圖像的展示

plt.imshow(img_arr) #imshow也可以將一個二維數組進行圖片展示規

plt.imshow(img_arr + 100)

zeros()、ones()、linespace()、arange()、random系列

#ones zeros()與ones()相似

np.ones(shape=(3,4)) #返回一個3行4列的np數組,元素都是1., zeros是0.

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

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

[1., 1., 1., 1.]])#linspace返回一維形式的等差數列 開始 ,結束,一共8個元素

np.linspace(0, 50, num=8)

array([ 0. ,7.14285714, 14.28571429, 21.42857143, 28.57142857,35.71428571, 42.85714286, 50. ])#arange返回一維形式的等差數列

np.arange(0,50,5)

array([ 0,5, 10, 15, 20, 25, 30, 35, 40, 45])#random.randint 返回指定形狀的隨機整數數組

np.random.randint(0,20,size=(4,5))

array([[3, 1, 16, 14, 1],

[18, 13, 10, 14, 18],

[19, 19, 1, 8, 13],

[15, 2, 17, 15, 6]])#random.random 隨機范圍0-1

np.random.random(size=(2, 2))

array([[0.16654448, 0.59399791],

[0.6076535 , 0.89254046]])

numpy的常用屬性

shape 形狀

ndim 維度

size 元素總個數

dtype 元素的數據類型

img_arr.shape #返回數組形狀

(500, 500, 3)

img_arr.ndim#返回數組維度

3img_arr.size#返回數組元素總個數

750000img_arr.dtype#返回數組元素的數據類型

dtype('uint8')

type(img_arr)#返回數組的數據類型

numpy.ndarray

numpy的數據類型

array(dtype=?):可以設定數據類型

arr.dtype = '?':可以修改數據類型

arr.astype('?'):也可以修改數據類型

修改數據類型

arr = np.array([1,2,3], dtype='float16')

array([1., 2., 3.], dtype=float16)#1、修改arr元素的數據類型

arr.astype('int8')

array([1, 2, 3], dtype=int8)#2、修改arr元素的數據類型

arr.dtype='float16'array([1., 2., 3.], dtype=float16)

numpy的索引和切片操作(重點)

索引取值操作

索引取值操作和列表同理

arr = np.random.randint(0,100,size=(5,6))

array([[21, 36, 62, 40, 52, 54],

[91, 45, 40, 35, 17, 98],

[48, 49, 36, 59, 47, 36],

[80, 66, 77, 21, 1, 80],

[18, 32, 55, 0, 32, 12]])

arr[3][4]1arr[0,4]52

切片操作

切出前兩行數據

切出前兩列數據

切出前兩行的前兩列的數據

數組數據翻轉

練習:將一張圖片上下左右進行翻轉操作

練習:將圖片進行指定區域的裁剪

#切出數組的前兩行的數據

arr[0:2]

array([[21, 36, 62, 40, 52, 54],

[91, 45, 40, 35, 17, 98]])#切出數組的前兩列

arr[:,0:2]

array([[21, 36],

[91, 45],

[48, 49],

[80, 66],

[18, 32]])#切出數組前兩行的前兩列

arr[0:2, 0:2]

array([[21, 36],

[91, 45]])#將數組行倒置

arr[::-1]

array([[18, 32, 55, 0, 32, 12],

[80, 66, 77, 21, 1, 80],

[48, 49, 36, 59, 47, 36],

[91, 45, 40, 35, 17, 98],

[21, 36, 62, 40, 52, 54]])#將數組列倒置

arr[::,::-1]

array([[54, 52, 40, 62, 36, 21],

[98, 17, 35, 40, 45, 91],

[36, 47, 59, 36, 49, 48],

[80, 1, 21, 77, 66, 80],

[12, 32, 0, 55, 32, 18]])#將數組進行行列導倒置

arr[::-1,::-1]

array([[12, 32, 0, 55, 32, 18],

[80, 1, 21, 77, 66, 80],

[36, 47, 59, 36, 49, 48],

[98, 17, 35, 40, 45, 91],

[54, 52, 40, 62, 36, 21]])

將圖片進行翻轉

importmatplotlib.pyplot as plt

img_arr= plt.imread('./1.jpg')

plt.imshow(img_arr)

img_arr.shape

(500, 500, 3) #前倆個是圖片像素,最后一個是顏色維度

#將圖片左右翻轉

plt.imshow(img_arr[:,::-1,:])#將圖片上下翻轉

plt.imshow(img_arr[::-1])#上下左右顏色都倒置

plt.imshow(img_arr[::-1,::-1,::-1])#圖片的裁剪:將臉部數據裁剪下來

plt.imshow(img_arr[30:300,140:330,:])

變形 reshape

注意:變形前和變形后數組的容量不可以發生變化

arr.shape

(5, 6)#將二維數組變形成一維數組 reshape()

arr_1 = arr.reshape((30,)) #原數組一共有30個元素,所以這里必須是30

array([21, 36, 62, 40, 52, 54, 91, 45, 40, 35, 17, 98, 48, 49, 36, 59, 47,36, 80, 66, 77, 21, 1, 80, 18, 32, 55, 0, 32, 12])#將一維數組變多維

arr_1 = arr.reshape((3,10)) #給定一個值另一個可以用-1自動計算

array([[21, 36, 62, 40, 52, 54, 91, 45, 40, 35],

[17, 98, 48, 49, 36, 59, 47, 36, 80, 66],

[77, 21, 1, 80, 18, 32, 55, 0, 32, 12]])

arr_1= arr.reshape((-1,10))

arr_1= arr.reshape((3,-1))

array([[21, 36, 62, 40, 52, 54, 91, 45, 40, 35],

[17, 98, 48, 49, 36, 59, 47, 36, 80, 66],

[77, 21, 1, 80, 18, 32, 55, 0, 32, 12]])

級聯操作 concatenate

級聯的操作意義:將多個numpy數組進行橫向或者縱向拼接

axis軸向的理解

0:列 y軸方向,豎直方向

1:行 x軸方向,水平方向

問題:

級聯的兩個數組維度一樣,但是行列個數不一樣會如何?

#axis=0列和列進行拼接,axis=1行和行進行拼接

np.concatenate((arr,arr),axis=1)

array([[21, 36, 62, 40, 52, 54, 21, 36, 62, 40, 52, 54],

[91, 45, 40, 35, 17, 98, 91, 45, 40, 35, 17, 98],

[48, 49, 36, 59, 47, 36, 48, 49, 36, 59, 47, 36],

[80, 66, 77, 21, 1, 80, 80, 66, 77, 21, 1, 80],

[18, 32, 55, 0, 32, 12, 18, 32, 55, 0, 32, 12]])

np.concatenate((arr,arr),axis=0)

array([[21, 36, 62, 40, 52, 54],

[91, 45, 40, 35, 17, 98],

[48, 49, 36, 59, 47, 36],

[80, 66, 77, 21, 1, 80],

[18, 32, 55, 0, 32, 12],

[21, 36, 62, 40, 52, 54],

[91, 45, 40, 35, 17, 98],

[48, 49, 36, 59, 47, 36],

[80, 66, 77, 21, 1, 80],

[18, 32, 55, 0, 32, 12]])

級聯的兩個數組維度一樣,但是行列個數不一樣會如何?

如果橫向級聯保證行數一致,縱向級聯保證列數一致

注意:維度不一致的數組無法級聯

arr_new = np.random.randint(0,100,size=(5,5))

array([[29, 43, 36, 67, 32],

[63, 65, 31, 90, 55],

[13, 59, 3, 3, 22],

[55, 26, 10, 5, 80],

[27, 20, 61, 75, 23]])

arr

array([[21, 36, 62, 40, 52, 54],

[91, 45, 40, 35, 17, 98],

[48, 49, 36, 59, 47, 36],

[80, 66, 77, 21, 1, 80],

[18, 32, 55, 0, 32, 12]])

np.concatenate((arr,arr_new), axis=0) #這樣就會報錯他倆列數不同

np.concatenate((arr,arr_new), axis=1) #先寫的數組元素在前

array([[21, 36, 62, 40, 52, 54, 29, 43, 36, 67, 32],

[91, 45, 40, 35, 17, 98, 63, 65, 31, 90, 55],

[48, 49, 36, 59, 47, 36, 13, 59, 3, 3, 22],

[80, 66, 77, 21, 1, 80, 55, 26, 10, 5, 80],

[18, 32, 55, 0, 32, 12, 27, 20, 61, 75, 23]])

圖片的9宮格

img_arr3 = np.concatenate((img_arr,img_arr,img_arr),axis=1)

img_arr9= np.concatenate((img_arr3,img_arr3,img_arr3), axis=0)

plt.imshow(img_arr9)

常用的聚合操作

sum求和、max最大值、min最小值、mean均值

#sum求和、max最大值、min最小值、mean均值,它們4個用法一致

arr.sum()#計算所有元素的和

1340arr.sum(axis=0) #計算每列元素的和

array([258, 228, 270, 155, 149, 280])

arr.sum(axis=1) #計算每行元素的和

array([265, 326, 275, 325, 149])

常用的數學函數

NumPy 提供了標準的三角函數及反三角函數:sin()、cos()、tan()

numpy.around(a,decimals) 函數返回指定數字的四舍五入值。

參數說明:

a: 數組

decimals: 舍入的小數位數。 默認值為0。 如果為負,整數將四舍五入到小數點左側的位置

np.sin([3.5,4.6,2.1])

array([-0.35078323, -0.993691 , 0.86320937])

np.around([33.4,51.2,55.8]) #默認decimals為0

array([33., 51., 56.])

np.around([33.4,51.2,55.8], decimals=1) #decimals=1保留一位小數

array([33.4, 51.2, 55.8])

np.around([33.4,51.2,55.8], decimals=-1) #decimals=-1個位數上四舍五入

array([30., 50., 60.])

常用的統計函數

numpy.amin() 和numpy.amax(),用于計算數組中的元素沿指定軸的最小、最大值。

numpy.ptp():計算數組中元素最大值與最小值的差(最大值 - 最小值)極差。

numpy.median() 函數用于計算數組 a 中元素的中位數(中值)

標準差std():標準差是一組數據平均值分散程度的一種度量。所有數據與均值的差的平方和除以元素個數開根號

公式:std = sqrt(mean((x - x.mean())**2))

如果數組是 [1,2,3,4],則其平均值為 2.5。 因此,差的平方是 [2.25,0.25,0.25,2.25],并且其平均值的平方根除以 4,即 sqrt(5/4) ,結果為 1.1180339887498949。

方差var():統計中的方差(樣本方差)是每個樣本值與全體樣本值的平均數之差的平方值的平均數,即 mean((x - x.mean())** 2)。換句話說,標準差是方差的平方根。

總結

以上是生活随笔為你收集整理的python科学计算三剑客_1-python数据分析-数据分析介绍、数据分析三剑客之NumPy的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。