欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中的numpy數(shù)組模塊

 更新時(shí)間:2022年05月30日 09:36:52   作者:springsnow  
這篇文章介紹了Python中的numpy數(shù)組模塊,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、numpy簡(jiǎn)介

numpy是Python的一種開(kāi)源的數(shù)值計(jì)算擴(kuò)展庫(kù)。這種庫(kù)可用來(lái)存儲(chǔ)和處理大型numpy數(shù)組,比Python自身的嵌套列表結(jié)構(gòu)要高效的多(該結(jié)構(gòu)也可以用來(lái)表示numpy數(shù)組)。

1、numpy庫(kù)作用:

  • 區(qū)別于list列表,提供了數(shù)組操作、數(shù)組運(yùn)算、以及統(tǒng)計(jì)分布和簡(jiǎn)單的數(shù)學(xué)模型 。
  • 計(jì)算速度快,甚至要由于python內(nèi)置的簡(jiǎn)單運(yùn)算,使得其成為pandas(分析結(jié)構(gòu)化數(shù)據(jù)的工具集)、sklearn(Scikit-learn(sklearn)是機(jī)器學(xué)習(xí)中常用的第三方模塊)等模塊的依賴包。
    高級(jí)的框架如TensorFlow、PyTorch等,其數(shù)組操作也和numpy非常相似。

2、NumPy 是一個(gè)運(yùn)行速度非??斓臄?shù)學(xué)庫(kù),主要用于數(shù)組計(jì)算,包含:

  • 一個(gè)強(qiáng)大的N維數(shù)組對(duì)象 ndarray
  • 廣播功能函數(shù)
  • 整合 C/C++/Fortran 代碼的工具
  • 線性代數(shù)、傅里葉變換、隨機(jī)數(shù)生成等功能

3、NumPy 應(yīng)用

NumPy 通常與 SciPy(Scientific Python)和 Matplotlib(繪圖庫(kù))一起使用, 這種組合廣泛用于替代 MatLab,是一個(gè)強(qiáng)大的科學(xué)計(jì)算環(huán)境,有助于我們通過(guò) Python 學(xué)習(xí)數(shù)據(jù)科學(xué)或者機(jī)器學(xué)習(xí)。

  • SciPy: 是一個(gè)開(kāi)源的 Python 算法庫(kù)和數(shù)學(xué)工具包。SciPy 包含的模塊有最優(yōu)化、線性代數(shù)、積分、插值、特殊函數(shù)、快速傅里葉變換、信號(hào)處理和圖像處理、常微分方程求解和其他科學(xué)與工程中常用的計(jì)算。
  • Matplotlib: 是 Python 編程語(yǔ)言及其數(shù)值數(shù)學(xué)擴(kuò)展包 NumPy 的可視化操作界面。它為利用通用的圖形用戶界面工具包,如 Tkinter, wxPython, Qt 或 GTK+ 向應(yīng)用程序嵌入式繪圖提供了應(yīng)用程序接口(API)。

二、為什么用numpy

lis1 = [1, 2, 3]
lis2 = [4, 5, 6]

如果我們想讓lis1 * lis2得到一個(gè)結(jié)果為lis_res = [4, 10, 18],非常復(fù)雜。

三、創(chuàng)建numpy數(shù)組

numpy數(shù)組即numpy的ndarray對(duì)象,

1、將列表轉(zhuǎn)換創(chuàng)建numpy數(shù)組,可選擇顯式指定dtype

import numpy as np

arr = np.array([1, 2, 3]) # 創(chuàng)建一維的ndarray對(duì)象
print(arr, type(arr))
# [1 2 3] <class 'numpy.ndarray'>

arr = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32)
print(arr)


print(np.array([[1, 2, 3], [4, 5, 6]])) # 創(chuàng)建二維的ndarray對(duì)象
# [[1 2 3]
#  [4 5 6]]


print(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])) # 創(chuàng)建三維的ndarray對(duì)象
# [[1 2 3]
#  [4 5 6]
#  [7 8 9]]

2、arange方式創(chuàng)建numpy數(shù)組

# 構(gòu)造0-9的ndarray數(shù)組
print(np.arange(10)) # [0 1 2 3 4 5 6 7 8 9]

# 構(gòu)造1-4的ndarray數(shù)組
print(np.arange(1, 5)) # [1 2 3 4]

# 構(gòu)造1-19且步長(zhǎng)為2的ndarray數(shù)組
print(np.arange(1, 20, 2)) # [ 1  3  5  7  9 11 13 15 17 19]

3、其他方式創(chuàng)建numpy數(shù)組

# 構(gòu)造3*4的全0的numpy數(shù)組
print(np.zeros((3, 4))) #zeros():根據(jù)指定形狀和dtype創(chuàng)建全0數(shù)組
# [[0. 0. 0. 0.]
#  [0. 0. 0. 0.]
#  [0. 0. 0. 0.]]

# 構(gòu)造3*4的全1的numpy數(shù)組
print(np.ones((3, 4)))  #ones():根據(jù)指定形狀和dtype創(chuàng)建全1數(shù)組
[[1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]]

# 構(gòu)造一個(gè)4*4的隨機(jī)的numpy數(shù)組,里面的元素是隨機(jī)生成的
print(np.empty((4, 4)))  #empty():創(chuàng)建一個(gè)元素全隨機(jī)的數(shù)組
# [[ 2.31584178e+077 -1.49457545e-154  3.95252517e-323  0.00000000e+000]
#  [ 0.00000000e+000  0.00000000e+000  0.00000000e+000  0.00000000e+000]
#  [ 0.00000000e+000  0.00000000e+000  0.00000000e+000  0.00000000e+000]
#  [ 0.00000000e+000  0.00000000e+000  1.29074055e-231  1.11687366e-308]]

arr = np.ones([2, 2], dtype=int)
print(arr.reshape(4, 1))  #reshape():重塑形狀
# [[1]
#  [1]
#  [1]
#  [1]]


# 構(gòu)造一個(gè)等差數(shù)列,取頭也取尾,從0取到20,取5個(gè)數(shù)
print(np.linspace(0, 20, 5))  # linspace/logspace():類(lèi)似arange(),第三個(gè)參數(shù)為數(shù)組長(zhǎng)度
# [ 0.  5. 10. 15. 20.]

# 構(gòu)造一個(gè)等比數(shù)列,從10**0取到10**20,取5個(gè)數(shù)
print(np.logspace(0, 20, 5))  # [1.e+00 1.e+05 1.e+10 1.e+15 1.e+20]

# 構(gòu)造3個(gè)主元的單位numpy數(shù)組
print(np.eye(3)) #eye():創(chuàng)建單位矩陣
# [[1. 0. 0.]
#  [0. 1. 0.]
#  [0. 0. 1.]]

4、numpy或pandas中reshape()重塑形狀(行列轉(zhuǎn)換)的用法

例子:

z = np.array([[1, 2, 3, 4],
          [5, 6, 7, 8],
          [9, 10, 11, 12],
          [13, 14, 15, 16]])
z.shape
#(4, 4)四行撕裂

1.z.reshape(-1)或z.reshape(1,-1),轉(zhuǎn)換成1行,列數(shù)未知。即將數(shù)組橫向平鋪。

z.reshape(-1)
#array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16])

2.z.reshape(-1, 1)),轉(zhuǎn)換成1列,行數(shù)未知。即將數(shù)組縱向平鋪。

z.reshape(-1,1)
# array([[ 1],
        [ 2],
        [ 3],
        [ 4],
        [ 5],
        [ 6],
        [ 7],
        [ 8],
        [ 9],
        [10],
        [11],
        [12],
        [13],
        [14],
        [15],
        [16]])

3.z.reshape(-1, 2),newshape列數(shù)等于2,行數(shù)未知,reshape后的shape等于(8, 2)

z.reshape(-1, 2)
# array([[ 1,  2],
        [ 3,  4],
        [ 5,  6],
        [ 7,  8],
        [ 9, 10],
        [11, 12],
        [13, 14],
        [15, 16]])

4、numpy.random生成隨機(jī)數(shù)

舉例:

rs = np.random.RandomState(1) # RandomState()方法會(huì)讓數(shù)據(jù)值隨機(jī)一次,之后都是相同的數(shù)據(jù)
print(rs.rand(10))
# [4.17022005e-01 7.20324493e-01 1.14374817e-04 3.02332573e-01
#  1.46755891e-01 9.23385948e-02 1.86260211e-01 3.45560727e-01
#  3.96767474e-01 5.38816734e-01]


np.random.seed(1)  # seed()方法會(huì)讓數(shù)據(jù)值隨機(jī)一次,之后都是相同的數(shù)據(jù)
print(np.random.rand(3, 4)) # rand產(chǎn)生均勻分布的隨機(jī)數(shù)。dn為第n維數(shù)據(jù)的維度。這里構(gòu)造3*4的均勻分布的numpy數(shù)組
# [[4.17022005e-01 7.20324493e-01 1.14374817e-04 3.02332573e-01]
#  [1.46755891e-01 9.23385948e-02 1.86260211e-01 3.45560727e-01]
#  [3.96767474e-01 5.38816734e-01 4.19194514e-01 6.85219500e-01]]

print(np.random.rand(3, 4, 5))  # 構(gòu)造3*4*5的均勻分布的numpy數(shù)組
# [[[0.20445225 0.87811744 0.02738759 0.67046751 0.4173048 ]
#   [0.55868983 0.14038694 0.19810149 0.80074457 0.96826158]
#   [0.31342418 0.69232262 0.87638915 0.89460666 0.08504421]
#   [0.03905478 0.16983042 0.8781425  0.09834683 0.42110763]]
#
#  [[0.95788953 0.53316528 0.69187711 0.31551563 0.68650093]
#   [0.83462567 0.01828828 0.75014431 0.98886109 0.74816565]
#   [0.28044399 0.78927933 0.10322601 0.44789353 0.9085955 ]
#   [0.29361415 0.28777534 0.13002857 0.01936696 0.67883553]]
#
#  [[0.21162812 0.26554666 0.49157316 0.05336255 0.57411761]
#   [0.14672857 0.58930554 0.69975836 0.10233443 0.41405599]
#   [0.69440016 0.41417927 0.04995346 0.53589641 0.66379465]
#   [0.51488911 0.94459476 0.58655504 0.90340192 0.1374747 ]]]

# 構(gòu)造3*4的正態(tài)分布的numpy數(shù)組
print(np.random.randn(3, 4))  #randn產(chǎn)生標(biāo)準(zhǔn)正態(tài)分布隨機(jī)數(shù)。dn為第n維數(shù)據(jù)的維度
# [[ 0.30017032 -0.35224985 -1.1425182  -0.34934272]
#  [-0.20889423  0.58662319  0.83898341  0.93110208]
#  [ 0.28558733  0.88514116 -0.75439794  1.25286816]]

# 構(gòu)造取值為1-5內(nèi)的10個(gè)元素的ndarray數(shù)組
print(np.random.randint(1, 5, 10)) # randint(low[, high, size, dtype]):產(chǎn)生隨機(jī)整數(shù)。low:最小值;high:最大值;size:數(shù)據(jù)個(gè)數(shù)
# [1 1 1 2 3 1 2 1 3 4]

# 構(gòu)造取值為0-1內(nèi)的3*4的numpy數(shù)組
print(np.random.random_sample((3, 4))) # random_sample([size]):在[0,1)[0,1)內(nèi)產(chǎn)生隨機(jī)數(shù)。size為隨機(jī)數(shù)的shape,可以為元祖或者列表
# [[0.62169572 0.11474597 0.94948926 0.44991213]
#  [0.57838961 0.4081368  0.23702698 0.90337952]
#  [0.57367949 0.00287033 0.61714491 0.3266449 ]]

arr = np.array([1, 2, 3])
# 隨機(jī)選取arr中的兩個(gè)元素
print(np.random.choice(arr, size=2)) # choice(a[, size]):從arr中隨機(jī)選擇指定數(shù)據(jù)。arr為1維數(shù)組;size為數(shù)組形狀
# [1 3]

arr = np.random.uniform(1, 5, (2, 3)) #uniform(low,high [,size]):給定形狀產(chǎn)生隨機(jī)數(shù)組。low為最小值;high為最大值,size為數(shù)組形狀
print(arr)
# [[4.72405173 3.30633687 4.35858086]
#  [3.49316845 2.29806999 3.91204657]]

np.random.shuffle(arr) #  shuffle(a):與random.shuffle相同。a為指定數(shù)組
print(arr)
# [[3.49316845 2.29806999 3.91204657]
#  [4.72405173 3.30633687 4.35858086]]

5、 fromstring/fromfunction(了解)

fromstring:通過(guò)對(duì)字符串的字符編碼所對(duì)應(yīng)ASCII編碼的位置,生成一個(gè)ndarray對(duì)象

s = 'abcdef'
# np.int8表示一個(gè)字符的字節(jié)數(shù)為8
print(np.fromstring(s, dtype=np.int8))  # [ 97  98  99 100 101 102]

fromfunction:使用函數(shù)對(duì)numpy數(shù)組元素的行和列的索引做處理,得到當(dāng)前元素的值。

索引從0開(kāi)始,并構(gòu)造一個(gè)3*4的numpy數(shù)組 print(np.fromfunction(func, (3, 4)))

def func(i, j):
    """其中i為numpy數(shù)組的行,j為numpy數(shù)組的列"""
    return i * j


# 使用函數(shù)對(duì)numpy數(shù)組元素的行和列的索引做處理,得到當(dāng)前元素的值,索引從0開(kāi)始,并構(gòu)造一個(gè)3*4的numpy數(shù)組
print(np.fromfunction(func, (3, 4)))
# [[0. 0. 0. 0.]
#  [0. 1. 2. 3.]
#  [0. 2. 4. 6.]]

四、常用屬性

舉例:

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(arr)
# [[ 1  2  3  4]
#  [ 5  6  7  8]
#  [ 9 10 11 12]]

print(arr[:, :]) # 取所有元素
# [[ 1  2  3  4]
#  [ 5  6  7  8]
#  [ 9 10 11 12]]

print(arr[:1, :])  # [[1 2 3 4]] # 取第一行的所有元素

print(arr[0, [0, 1, 2, 3]])  # [1 2 3 4] # 取第一行的所有元素

print(arr[:, :1]) # 取第一列的所有元素
# [[1]
#  [5]
#  [9]]

print(arr[(0, 1, 2), 0])  # [1 5 9] # 取第一列的所有元素

print(arr[0, 0])  # 1 # 取第一行第一列的元素

print(arr[arr > 5])  # [ 6  7  8  9 10 11 12] # 取大于5的元素,返回一個(gè)數(shù)組

print(arr > 5) # numpy數(shù)組按運(yùn)算符取元素的原理,即通過(guò)arr > 5生成一個(gè)布爾numpy數(shù)組
# [[False False False False]
#  [False  True  True  True]
#  [ True  True  True  True]]

五、切割

切分numpy數(shù)組類(lèi)似于列表的切割,但是與列表的切割不同的是,numpy數(shù)組的切割涉及到行和列的切割,但是兩者切割的方式都是從索引0開(kāi)始,并且取頭不取尾。

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(arr)
# [[ 1  2  3  4]
#  [ 5  6  7  8]
#  [ 9 10 11 12]]

print(arr[:, :]) # 取所有元素
# [[ 1  2  3  4]
#  [ 5  6  7  8]
#  [ 9 10 11 12]]

print(arr[:1, :])  # [[1 2 3 4]] # 取第一行的所有元素

print(arr[0, [0, 1, 2, 3]])  # [1 2 3 4] # 取第一行的所有元素

print(arr[:, :1]) # 取第一列的所有元素
# [[1]
#  [5]
#  [9]]

print(arr[(0, 1, 2), 0])  # [1 5 9] # 取第一列的所有元素

print(arr[0, 0])  # 1 # 取第一行第一列的元素

print(arr[arr > 5])  # [ 6  7  8  9 10 11 12] # 取大于5的元素,返回一個(gè)數(shù)組

print(arr > 5) # numpy數(shù)組按運(yùn)算符取元素的原理,即通過(guò)arr > 5生成一個(gè)布爾numpy數(shù)組
# [[False False False False]
#  [False  True  True  True]
#  [ True  True  True  True]]

七、元素替換

numpy數(shù)組元素的替換,類(lèi)似于列表元素的替換,并且numpy數(shù)組也是一個(gè)可變類(lèi)型的數(shù)據(jù),即如果對(duì)numpy數(shù)組進(jìn)行替換操作,會(huì)修改原numpy數(shù)組的元素,所以下面我們用.copy()方法舉例numpy數(shù)組元素的替換。

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(arr)
# [[ 1  2  3  4]
#  [ 5  6  7  8]
#  [ 9 10 11 12]]

arr1 = arr.copy() 
arr1[:1, :] = 0 # 取第一行的所有元素,并且讓第一行的元素都為0
print(arr1)
# [[ 0  0  0  0]
#  [ 5  6  7  8]
#  [ 9 10 11 12]]

arr2 = arr.copy() 
arr2[arr > 5] = 0 # 取所有大于5的元素,并且讓大于5的元素為0
print(arr2)
# [[1 2 3 4]
#  [5 0 0 0]
#  [0 0 0 0]]

arr3 = arr.copy()
arr3[:, :] = 0 # 對(duì)numpy數(shù)組清零
print(arr3)
# [[0 0 0 0]
#  [0 0 0 0]
#  [0 0 0 0]]

八、合并

arr1 = np.array([[1, 2], [3, 4], [5, 6]])
print(arr1)
# [[1 2]
#  [3 4]
#  [5 6]]

arr2 = np.array([[7, 8], [9, 10], [11, 12]])
print(arr2)
# [[ 7  8]
#  [ 9 10]
#  [11 12]]
print(np.concatenate((arr1, arr2), axis=0)) # 合并兩個(gè)numpy數(shù)組,其中axis=0表示合并兩個(gè)numpy數(shù)組的行
# [[ 1  2]
#  [ 3  4]
#  [ 5  6]
#  [ 7  8]
#  [ 9 10]
#  [11 12]]

print(np.concatenate((arr1, arr2), axis=1)) # 合并兩個(gè)numpy數(shù)組,其中axis=1表示合并兩個(gè)numpy數(shù)組的列
# [[ 1  2  7  8]
#  [ 3  4  9 10]
#  [ 5  6 11 12]]
print(np.vstack((arr1, arr2))) # 合并兩個(gè)numpy數(shù)組的行,其中vstack的v表示vertical垂直的,垂直方向的合并
# [[ 1  2]
#  [ 3  4]
#  [ 5  6]
#  [ 7  8]
#  [ 9 10]
#  [11 12]]

print(np.hstack((arr1, arr2))) # 合并兩個(gè)numpy數(shù)組的列,其中hstack的h表示horizontal水平的,水平方向的合并
# [[ 1  2  7  8]
#  [ 3  4  9 10]
#  [ 5  6 11 12]]

九、運(yùn)算符

arr1 = np.array([[1, 2], [3, 4], [5, 6]])
print(arr1)
# [[1 2]
#  [3 4]
#  [5 6]]

arr2 = np.array([[7, 8], [9, 10], [11, 12]])
print(arr2)
# [[ 7  8]
#  [ 9 10]
#  [11 12]]

print(arr1 + arr2) # +:兩個(gè)numpy數(shù)組對(duì)應(yīng)元素相加 ;-減;*乘;/相除取整;%相除取余
# [[ 8 10]
#  [12 14]
#  [16 18]]

print(arr1**2) # **n:?jiǎn)蝹€(gè)numpy數(shù)組每個(gè)元素都取n次方,如**2:每個(gè)元素都取平方
# [[ 1  4]
#  [ 9 16]
#  [25 36]]

十、運(yùn)算函數(shù)

  • 一元函數(shù):abs, sqrt, exp, log, ceil, floor, rint, trunc, modf, isnan, isinf, cos, sin, tan
  • 二元函數(shù):add, substract, multiply, divide, power, mod, maximum, mininum
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(arr)
# [[ 1  2  3  4]
#  [ 5  6  7  8]
#  [ 9 10 11 12]]

print(np.sin(arr)) # 對(duì)numpy數(shù)組的所有元素取正弦,cos余弦,tan正切
# [[0.84147098  0.90929743  0.14112001 - 0.7568025]
#  [-0.95892427 - 0.2794155   0.6569866   0.98935825]
# [0.41211849 - 0.54402111 - 0.99999021 - 0.53657292]]

print(np.sqrt(arr)) # 對(duì)numpy數(shù)組的所有元素開(kāi)根號(hào),.exp指數(shù)函數(shù)
# [[1.         1.41421356 1.73205081 2.        ]
#  [2.23606798 2.44948974 2.64575131 2.82842712]
#  [3.         3.16227766 3.31662479 3.46410162]]

print(np.arcsin(arr * 0.1)) # 對(duì)numpy數(shù)組的所有元素取反正弦,如果元素不在定義域內(nèi),則會(huì)取nan值
# [[0.10016742 0.20135792 0.30469265 0.41151685]
#  [0.52359878 0.64350111 0.7753975  0.92729522]
#  [1.11976951 1.57079633        nan        nan]]

# RuntimeWarning: invalid
# value
# encountered in arcsin

# 判斷矩陣元素中是否含有np.nan值
print(np.isnan(arr))
# [[False False False False]
#  [False False False False]
#  [False False False False]]

十一、矩陣化

arr1 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr1.shape)
# (2, 3)

arr2 = np.array([[7, 8], [9, 10], [11, 12]])
print(arr2.shape)
# (3, 2)

assert arr1.shape[0] == arr2.shape[1] # 1、numpy數(shù)組的點(diǎn)乘必須滿足第一個(gè)numpy數(shù)組的列數(shù)等于第二個(gè)numpy數(shù)組的行數(shù),即m?n?n?m=m?mm?n·n?m=m?m。
# 2*3·3*2 = 2*2
print(arr2.shape)
# (3, 2)


arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr)
# [[1 2 3]
#  [4 5 6]]

print(arr.transpose()) # 2、numpy數(shù)組的轉(zhuǎn)置,相當(dāng)于numpy數(shù)組的行和列互換。
# [[1 4]
#  [2 5]
#  [3 6]]

print(arr.T)
# [[1 4]
#  [2 5]
#  [3 6]]


arr = np.array([[1, 2, 3], [4, 5, 6], [9, 8, 9]])
print(arr)
# [[1 2 3]
#  [4 5 6]
#  [9 8 9]]

print(np.linalg.inv(arr)) # 3、numpy數(shù)組的逆,numpy數(shù)組行和列相同時(shí),numpy數(shù)組才可逆。
# [[ 0.5        -1.          0.5       ]
#  [-3.          3.         -1.        ]
#  [ 2.16666667 -1.66666667  0.5       ]]

arr = np.eye(3) # 單位numpy數(shù)組的逆是單位numpy數(shù)組本身
print(arr)
# [[1. 0. 0.]
#  [0. 1. 0.]
#  [0. 0. 1.]]

print(np.linalg.inv(arr))
# [[1. 0. 0.]
#  [0. 1. 0.]
#  [0. 0. 1.]]

十二、numpy數(shù)組的數(shù)學(xué)和統(tǒng)計(jì)方法

1、最大最小值、平均、求和

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr)
# [[1 2 3]
#  [4 5 6]
#  [7 8 9]]

print(arr.max())  # 9 # 獲取numpy數(shù)組所有元素中的最大值
print(arr.min())  # 1 # 獲取numpy數(shù)組所有元素中的最小值
print(arr.max(axis=0))  # [7 8 9] # 獲取numpy數(shù)組每一行的最大值
print(arr.max(axis=1))  # [3 6 9] # 獲取numpy數(shù)組每一列的最大值
print(arr.argmax(axis=1))  # [2 2 2] # 獲取numpy數(shù)組最大元素的索引位置 argmin:求最小值索引

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr)
# [[1 2 3]
#  [4 5 6]
#  [7 8 9]]

print(arr.sum())  # 45 # 對(duì)numpy數(shù)組的每一個(gè)元素求和
print(arr.sum(axis=0))  # [12 15 18] # 對(duì)numpy數(shù)組的每一列求和
print(arr.sum(axis=1))  # [ 6 15 24] # 對(duì)numpy數(shù)組的每一行求和

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr)
# [[1 2 3]
#  [4 5 6]
#  [7 8 9]]

print(arr.mean())  # 5.0 # 獲取numpy數(shù)組所有元素的平均值
print(arr.mean(axis=0))  # [4. 5. 6.]  # 獲取numpy數(shù)組每一列的平均值
print(arr.mean(axis=1))  # [2. 5. 8.] # 獲取numpy數(shù)組每一行的平均值

2、累加和

arr = np.array([1, 2, 3, 4, 5])
print(arr)  # [1 2 3 4 5]
print(arr.cumsum())  # [ 1  3  6 10 15] # 第n個(gè)元素為前n-1個(gè)元素累加和

3、排序

numpy.sort(a, axis, kind, order):返回輸入數(shù)組的排序副本

  • a: 要排序的數(shù)組
  • axis: 沿著它排序數(shù)組的軸,如果沒(méi)有數(shù)組會(huì)被展開(kāi),沿著最后的軸排序, axis=0 按列排序,axis=1 按行排序
  • kind: 默認(rèn)為'quicksort'(快速排序) ,'mergesort'(歸并排序),'heapsort'(堆排序)
  • order: 如果數(shù)組包含字段,則是要排序的字段
a = np.array([[3,7],[9,1]])  
print (a)
#[[3 7]
# [9 1]]

print (np.sort(a))
#[[3 7]
# [1 9]]

print (np.sort(a, axis =  0)) #按列排序:
#[[3 1]
# [9 7]]

dt = np.dtype([('name',  'S10'),('age',  int)]) 
a = np.array([("raju",21),("anil",25),("ravi",  17),  ("amar",27)], dtype = dt)  
print (a)
# [(b'raju', 21) (b'anil', 25) (b'ravi', 17) (b'amar', 27)]
print (np.sort(a, order =  'name'))  在 sort 函數(shù)中排序字段;按 name 排序:
# [(b'amar', 27) (b'anil', 25) (b'raju', 21) (b'ravi', 17)]

4、 方差

方差公式為

其中x為numpy數(shù)組。

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr)
# [[1 2 3]
#  [4 5 6]
#  [7 8 9]]

print(arr.var())  # 6.666666666666667  # 獲取numpy數(shù)組所有元素的方差
print(arr.var(axis=0))  # [6. 6. 6.]  # 獲取numpy數(shù)組每一列的元素的方差
print(arr.var(axis=1))  # [0.66666667 0.66666667 0.66666667] # 獲取numpy數(shù)組每一行的元素的方差

5、 標(biāo)準(zhǔn)差

標(biāo)準(zhǔn)差公式為:

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr)
# [[1 2 3]
#  [4 5 6]
#  [7 8 9]]

print(arr.std())  # 2.581988897471611 # 獲取numpy數(shù)組所有元素的標(biāo)準(zhǔn)差
print(arr.std(axis=0))  # [2.44948974 2.44948974 2.44948974] # 獲取numpy數(shù)組每一列的標(biāo)準(zhǔn)差
print(arr.std(axis=1))  # [0.81649658 0.81649658 0.81649658] # 獲取numpy數(shù)組每一行的標(biāo)準(zhǔn)差

6、 中位數(shù)

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr)
# [[1 2 3]
#  [4 5 6]
#  [7 8 9]]

print(np.median(arr))  # 5.0 # 獲取numpy數(shù)組所有元素的中位數(shù)
print(np.median(arr, axis=0))  # [4. 5. 6.] # 獲取numpy數(shù)組每一列的中位數(shù)
print(np.median(arr, axis=1))  # [2. 5. 8.] # 獲取numpy數(shù)組每一行的中位數(shù)

到此這篇關(guān)于Python數(shù)組模塊numpy的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python編程快速上手——PDF文件操作案例分析

    Python編程快速上手——PDF文件操作案例分析

    這篇文章主要介紹了Python 文件操作,結(jié)合具體實(shí)例形式分析了Python針對(duì)pdf文件的遍歷、讀寫(xiě)、加密、解密等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • 自定義Django默認(rèn)的sitemap站點(diǎn)地圖樣式

    自定義Django默認(rèn)的sitemap站點(diǎn)地圖樣式

    這篇文章主要介紹了自定義Django默認(rèn)的sitemap站點(diǎn)地圖樣式,通過(guò)代碼給大家介紹了使用Django的sitemap功能,代碼很簡(jiǎn)單非常不錯(cuò)對(duì)大家的工作或?qū)W習(xí)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • pytest全局變量的使用詳解

    pytest全局變量的使用詳解

    全局變量是在函數(shù)外部定義的變量,所有函數(shù)內(nèi)部都可以使用這個(gè)變量,本文就來(lái)介紹一下pytest全局變量的使用,感興趣的可以了解一下
    2023-11-11
  • 關(guān)于networkx返回圖的鄰接矩陣問(wèn)題

    關(guān)于networkx返回圖的鄰接矩陣問(wèn)題

    這篇文章主要介紹了關(guān)于networkx返回圖的鄰接矩陣問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 淺析Python 抽象工廠模式的優(yōu)缺點(diǎn)

    淺析Python 抽象工廠模式的優(yōu)缺點(diǎn)

    這篇文章主要介紹了Python 抽象工廠模式的優(yōu)缺點(diǎn),文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • EM算法的python實(shí)現(xiàn)的方法步驟

    EM算法的python實(shí)現(xiàn)的方法步驟

    本篇文章主要介紹了EM算法的python實(shí)現(xiàn)的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • python 利用matplotlib在3D空間繪制二次拋物面的案例

    python 利用matplotlib在3D空間繪制二次拋物面的案例

    這篇文章主要介紹了python 利用matplotlib在3D空間繪制二次拋物面的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • Python?PaddleNLP開(kāi)源實(shí)現(xiàn)快遞單信息抽取

    Python?PaddleNLP開(kāi)源實(shí)現(xiàn)快遞單信息抽取

    這篇文章主要為大家介紹了Python?PaddleNLP開(kāi)源項(xiàng)目實(shí)現(xiàn)對(duì)快遞單信息抽取,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • python中封裝token問(wèn)題

    python中封裝token問(wèn)題

    這篇文章主要介紹了python中封裝token問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • pandas dataframe拼接后index重新排序方式

    pandas dataframe拼接后index重新排序方式

    這篇文章主要介紹了pandas dataframe拼接后index重新排序方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評(píng)論