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

歡迎訪問 生活随笔!

生活随笔

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

python

Python NumPy的使用

發(fā)布時(shí)間:2025/5/22 python 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python NumPy的使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

NumPy

  • 學(xué)習(xí)目標(biāo):
        • NumPy的使用
  • 學(xué)習(xí)內(nèi)容:
  • 使用步驟
    • Numpy 數(shù)組操作
        • 1、 數(shù)組的拼接
        • 2、 數(shù)組的分割
        • 3、 數(shù)組的行列交換
    • NumPy 統(tǒng)計(jì)函數(shù)
        • 1、 求和
        • 2、 求和函數(shù)
        • 3、 均值函數(shù)
        • 4、 中值函數(shù)
        • 5、 最大值與最小值函數(shù)
        • 6、 極值函數(shù)
        • 7、 標(biāo)準(zhǔn)差函數(shù)
        • 小結(jié)
          • 對數(shù)組中的 nan 填充均值
  • 總結(jié)

學(xué)習(xí)目標(biāo):

NumPy的使用

環(huán)境:

  • Anaconda 2.0.4
  • Python 3.7.10
    • numpy 1.20.2

NumPy安裝:

pip install numPy

Python 引入 numpy 庫

import numpy as np

學(xué)習(xí)內(nèi)容:

Numpy 數(shù)組操作

  • 1、 數(shù)組的拼接
  • 2、 數(shù)組的分割
  • 3、 數(shù)組的行列交換

NumPy 統(tǒng)計(jì)函數(shù)

  • 1、求和
  • 2、均值
  • 3、中值
  • 4、最大值
  • 5、最小值
  • 6、極值
  • 7、標(biāo)準(zhǔn)差

使用步驟

Numpy 數(shù)組操作

1、 數(shù)組的拼接

函數(shù)描述
hstack水平堆疊序列中的數(shù)組(列方向)
vstack豎直堆疊序列中的數(shù)組(行方向)

代碼如下(示例):

import numpy as npt1 = np.arange(12).reshape((2, 6)) # 創(chuàng)建一個(gè) 2行6列的數(shù)組 print(t1)t2 = np.arange(12, 24).reshape((2, 6)) print(t2) [[ 0 1 2 3 4 5][ 6 7 8 9 10 11]][[12 13 14 15 16 17][18 19 20 21 22 23]] t3 = np.vstack((t1, t2)) # 豎直拼接 print(t3) [[ 0 1 2 3 4 5][ 6 7 8 9 10 11][12 13 14 15 16 17][18 19 20 21 22 23]] t4 = np.hstack((t1, t2)) # 水平拼接 print(t4) [[ 0 1 2 3 4 5 12 13 14 15 16 17][ 6 7 8 9 10 11 18 19 20 21 22 23]]

2、 數(shù)組的分割

函數(shù)描述
split將一個(gè)數(shù)組分割為多個(gè)子數(shù)組
hsplit將一個(gè)數(shù)組水平分割為多個(gè)子數(shù)組(按列)
vsplit將一個(gè)數(shù)組垂直分割為多個(gè)子數(shù)組(按行)

numpy.split(ary, indices_or_sections, axis)

  • axis:設(shè)置沿著哪個(gè)方向進(jìn)行切分,默認(rèn)為 0,橫向切分,即水平方向。為 1 時(shí),縱向切分,即豎直方向。

代碼如下(示例):

import numpy as npt1 = np.arange(12).reshape((2, 6)) t2 = np.arange(12, 24).reshape((2, 6)) t3 = np.vstack((t1, t2)) # 將上面2個(gè)數(shù)組進(jìn)行豎直拼接 print(t3) t4 = np.hstack((t1, t2)) # 將t1 t2兩個(gè)數(shù)組進(jìn)行水平拼接 print(t4) print(np.split(t3, 2, axis=0)) # 使用np.split()函數(shù)將上面的數(shù)組進(jìn)行橫向分割 [array([[ 0, 1, 2, 3, 4, 5],[ 6, 7, 8, 9, 10, 11]]), array([[12, 13, 14, 15, 16, 17],[18, 19, 20, 21, 22, 23]])] print(np.split(t3, 2, axis=1)) # 使用np.split()函數(shù)將上面的數(shù)組進(jìn)行縱向分割 [array([[ 0, 1, 2],[ 6, 7, 8],[12, 13, 14],[18, 19, 20]]), array([[ 3, 4, 5],[ 9, 10, 11],[15, 16, 17],[21, 22, 23]])]

注:axis 為 0 時(shí)在水平方向分割,axis 為 1 時(shí)在垂直方向分割。

print(np.hsplit(t4, 2)) # 用 np.hsplit()函數(shù)水平分割分割成2個(gè)數(shù)組 [array([[ 0, 1, 2, 3, 4, 5],[ 6, 7, 8, 9, 10, 11]]), array([[12, 13, 14, 15, 16, 17],[18, 19, 20, 21, 22, 23]])] print(np.vsplit(t3, 2)) # 用 np.vsplit()函數(shù) 垂直分隔成2個(gè)數(shù)組 [array([[ 0, 1, 2, 3, 4, 5],[ 6, 7, 8, 9, 10, 11]]), array([[12, 13, 14, 15, 16, 17],[18, 19, 20, 21, 22, 23]])] print(np.vsplit(t3, 4)) # 用 np.vsplit()函數(shù) 垂直分隔成4個(gè)數(shù)組 [array([[0, 1, 2, 3, 4, 5]]), array([[ 6, 7, 8, 9, 10, 11]]), array([[12, 13, 14, 15, 16, 17]]), array([[18, 19, 20, 21, 22, 23]])]

3、 數(shù)組的行列交換

代碼如下(示例):

t = np.arange(12, 24).reshape(3, 4) print(t) [[ 0 1 2 3][ 4 5 6 7][ 8 9 10 11]] print("-------------行交換-------------") t[[1, 2], :] = t[[2, 1], :] # 行交換 第2行與第三行進(jìn)行交換 print(t) [[ 0 1 2 3][ 8 9 10 11][ 4 5 6 7]] print("-------------列交換-------------") t = np.arange(0, 12).reshape(3, 4) t[:, [0, 2]] = t[:, [2, 0]] # 列交換 第1列與第3列進(jìn)行交換,每次交換都會(huì)改變原數(shù)組 print(t) [[ 2 1 0 3][ 6 5 4 7][10 9 8 11]]

NumPy 統(tǒng)計(jì)函數(shù)

函數(shù)描述
sum求和
mean返回?cái)?shù)組中元素的算術(shù)平均值
np.median中值
max最大值
min最小值
ptp極值
std標(biāo)準(zhǔn)差

注:標(biāo)準(zhǔn)差是一組數(shù)據(jù)平均值分散程度的一種度量。一個(gè)較大的標(biāo)準(zhǔn)差,代表大部分?jǐn)?shù)值和其平均值之間差異較大;一個(gè)較小的標(biāo)準(zhǔn)差,代表這些數(shù)值較接近平均值反映出數(shù)據(jù)的波動(dòng)穩(wěn)定情況,越大表示波動(dòng)越大,越不穩(wěn)定。

1、 求和

代碼如下(示例):

t1 = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, np.nan, 15], [16, 17, 18, 19, 20]]) t2 = np.arange(12).reshape((4, 3)) # 創(chuàng)建 4行 3列的數(shù)組 print(t1) print(t2) [[ 0. 2. 3. 4. 5.][ 0. 7. 8. 9. 10.][ 0. 12. 13. nan 15.][ 0. 17. 18. 19. 20.]][[ 0 1 2][ 3 4 5][ 6 7 8][ 9 10 11]] print(np.sum(t2)) # 計(jì)算t2數(shù)組所有的和 66 print(np.sum(t2, axis=0)) # 計(jì)算t2數(shù)組每一行相加的結(jié)果 [18 22 26] print(np.sum(t2, axis=1)) # 計(jì)算t2數(shù)組每一列相加的結(jié)果 [ 3 12 21 30] print(np.sum(t1, axis=0)) # 計(jì)算t1數(shù)組每一行相加的結(jié)果 [ 0. 38. 42. nan 50.] print(np.sum(t1, axis=1)) # 計(jì)算t1數(shù)組每一列相加的結(jié)果 [14. 34. nan 74.]

注意:nan和任何值計(jì)算都為nan

2、 求和函數(shù)

# numpy中常用統(tǒng)計(jì)函數(shù) t2 = np.arange(12).reshape((4, 3)) print(t2.sum(axis=0)) # 求和 [18 22 26]

3、 均值函數(shù)

print(t2.mean(axis=0)) # 均值 [4.5 5.5 6.5]

4、 中值函數(shù)

print(np.median(t2)) # 中值 print(np.median(t2, axis=0)) # 中值 5.5 [4.5 5.5 6.5]

5、 最大值與最小值函數(shù)

print(t2.max(axis=0)) # 最大值 print(t2.min(axis=0)) # 最小值 [ 9 10 11] [0 1 2]

6、 極值函數(shù)

print(np.ptp(t2)) # 極值, 即最大值和最小值之差 print(np.ptp(t2, axis=0)) 11 [9 9 9]

7、 標(biāo)準(zhǔn)差函數(shù)

print(t2.std(axis=0)) # 標(biāo)準(zhǔn)差 [3.35410197 3.35410197 3.35410197]

小結(jié)

對數(shù)組中的 nan 填充均值
# coding=utf-8 import numpy as np# 為每一列的nan填充均值 def fill_column_ndarray(t1):for i in range(t1.shape[1]): # 遍歷每一列temp_col = t1[:, i] # 當(dāng)前的一列nan_num = np.count_nonzero(temp_col != temp_col)if nan_num != 0: # 不為0,說明當(dāng)前這一列中有nantemp_not_nan_col = temp_col[temp_col == temp_col] # 當(dāng)前一列不為nan的array# 選中當(dāng)前為nan的位置,把值賦給為不為nan的均值temp_col[np.isnan(temp_col)] = temp_not_nan_col.mean()return t1# 為每一行的nan填充均值 def fill_row_ndarray(t2):for i in range(t1.shape[0]): # 遍歷每一行temp_row = t1[i, :] # 當(dāng)前的一行nan_num = np.count_nonzero(temp_row != temp_row)if nan_num != 0: # 不為0,說明當(dāng)前這一列中有nantemp_not_nan_row = temp_row[temp_row == temp_row] # 當(dāng)前一行不為nan的array# 選中當(dāng)前為nan的位置,把值賦給為不為nan的均值temp_row[np.isnan(temp_row)] = temp_not_nan_row.mean()return t1if __name__ == '__main__':t1 = np.arange(12).reshape((3, 4)).astype("float")t1[1, 0:] = np.nan # 給數(shù)組第二行賦值print("原數(shù)組:")print(t1)t1 = fill_column_ndarray(t1)print("豎向填充均值:")print(t1)print("*" * 25)t2 = np.arange(12).reshape((3, 4)).astype("float")t2[:, 2] = np.nan # 給數(shù)組的第三列賦值print("原數(shù)組:")print(t2)t2 = fill_row_ndarray(t2)print("橫向填充均值:")print(t2) 原數(shù)組: [[ 0. 1. 2. 3.][nan nan nan nan][ 8. 9. 10. 11.]] 豎向填充均值: [[ 0. 1. 2. 3.][ 4. 5. 6. 7.][ 8. 9. 10. 11.]] ************************* 原數(shù)組: [[ 0. 1. nan 3.][ 4. 5. nan 7.][ 8. 9. nan 11.]] 橫向填充均值: [[ 0. 1. 2. 3.][ 4. 5. 6. 7.][ 8. 9. 10. 11.]]

總結(jié)

1.Numpy 中包含了一些函數(shù)用于處理數(shù)組,大概可分為以下幾類:

  • 修改數(shù)組形狀
  • 翻轉(zhuǎn)數(shù)組
  • 修改數(shù)組維度
  • 連接數(shù)組
  • 分割數(shù)組
  • 數(shù)組元素的添加與刪除

2.nan和任何值計(jì)算都為nan。
3.axis 為 0 時(shí)在水平方向,axis 為 1 時(shí)在垂直方向。

總結(jié)

以上是生活随笔為你收集整理的Python NumPy的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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