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

一文詳細介紹numpy在python中的用法

 更新時間:2025年01月03日 10:22:36   作者:科技追蹤者  
這篇文章主要介紹了numpy在python中的用法,NumPy是Python科學計算庫,主要用于處理大型多維數(shù)組和矩陣運算,它提供了多種函數(shù)進行數(shù)組操作,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

前言

NumPy 是 Python 科學計算庫中非常重要的庫,主要用于處理大型多維數(shù)組和矩陣運算。它提供了大量數(shù)學函數(shù)來操作這些數(shù)組。 NumPy 的核心是 ndarray 對象,該對象是一個多維數(shù)組,可以存儲同類型的數(shù)據(jù)。

下面是 NumPy 的詳細用法和功能介紹:

1. 導入NumPy

在使用 NumPy 之前,需要先導入庫,通常我們會將 NumPy 以 np 作為別名:

import numpy as np

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

NumPy 中的數(shù)組稱為 ndarray,可以通過多種方式創(chuàng)建數(shù)組:

a) 使用 array() 創(chuàng)建數(shù)組

# 從Python列表創(chuàng)建數(shù)組
arr = np.array([1, 2, 3, 4])
print(arr)  # 輸出: [1 2 3 4]

# 創(chuàng)建多維數(shù)組
arr_2d = np.array([[1, 2], [3, 4]])
print(arr_2d)  # 輸出: [[1 2] [3 4]]

b) 使用 zeros()、ones() 和 full() 創(chuàng)建特定值數(shù)組

# 創(chuàng)建一個全為0的數(shù)組
zeros_arr = np.zeros((2, 3))
print(zeros_arr)  # 輸出:[[0. 0. 0.] [0. 0. 0.]]

# 創(chuàng)建一個全為1的數(shù)組
ones_arr = np.ones((2, 3))
print(ones_arr)  # 輸出:[[1. 1. 1.] [1. 1. 1.]]

# 創(chuàng)建一個指定數(shù)值的數(shù)組
full_arr = np.full((2, 2), 5)
print(full_arr)  # 輸出:[[5 5] [5 5]]

c) 使用 arange() 和 linspace() 創(chuàng)建序列數(shù)組

# 創(chuàng)建一個等差序列數(shù)組
arr_range = np.arange(0, 10, 2)
print(arr_range)  # 輸出:[0 2 4 6 8]

# 創(chuàng)建一個線性間隔數(shù)組
arr_linspace = np.linspace(0, 1, 5)
print(arr_linspace)  # 輸出:[0.   0.25 0.5  0.75 1.  ]

3. 數(shù)組屬性

ndarray 對象具有多種屬性,可以獲取數(shù)組的信息:

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

print(arr.shape)  # 數(shù)組的形狀 (2, 3)
print(arr.size)   # 數(shù)組中的元素數(shù)量 6
print(arr.ndim)   # 數(shù)組的維度 2
print(arr.dtype)  # 數(shù)組元素的數(shù)據(jù)類型 int64

4. 數(shù)組索引和切片

NumPy 數(shù)組支持多維索引和切片操作。

a) 一維數(shù)組索引

arr = np.array([1, 2, 3, 4, 5])
print(arr[0])   # 輸出第一個元素:1
print(arr[-1])  # 輸出最后一個元素:5

b) 多維數(shù)組索引

arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr_2d[0, 2])  # 輸出第一行第三列的元素:3
print(arr_2d[1, -1]) # 輸出第二行最后一個元素:6

c) 切片

# 一維數(shù)組切片
arr = np.array([1, 2, 3, 4, 5])
print(arr[1:4])  # 輸出: [2 3 4]

# 多維數(shù)組切片
arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr_2d[0:2, 1:3])  # 輸出:[[2 3] [5 6]]

5. 數(shù)學運算

NumPy 可以對數(shù)組進行廣播機制下的運算。

a) 數(shù)組的基本運算

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

print(arr + 2)  # 輸出:[3 4 5]
print(arr * 3)  # 輸出:[3 6 9]
print(arr ** 2) # 輸出:[1 4 9]

b) 數(shù)組之間的運算

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

print(arr1 + arr2)  # 輸出:[5 7 9]
print(arr1 * arr2)  # 輸出:[4 10 18]

c) 通用函數(shù) (Universal Functions)

NumPy 提供了許多通用的數(shù)學函數(shù),可以應用于數(shù)組的每個元素,例如 sin()、exp()sqrt() 等。

arr = np.array([1, 2, 3])
print(np.sin(arr))  # 輸出:數(shù)組每個元素的正弦值
print(np.exp(arr))  # 輸出:數(shù)組每個元素的指數(shù)值
print(np.sqrt(arr)) # 輸出:數(shù)組每個元素的平方根

6. 數(shù)組的形狀操作

NumPy 提供了許多工具來改變數(shù)組的形狀。

a) reshape() 改變數(shù)組形狀

arr = np.array([[1, 2, 3], [4, 5, 6]])
reshaped_arr = arr.reshape((3, 2))
print(reshaped_arr)
# 輸出:
# [[1 2]
#  [3 4]
#  [5 6]]

b) 數(shù)組轉(zhuǎn)置

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

7. 數(shù)組的合并和分割

NumPy 支持對數(shù)組的合并和分割操作。

a) 數(shù)組的合并

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

# 垂直合并
vstack_arr = np.vstack((arr1, arr2))
print(vstack_arr)  # 輸出:[[1 2] [3 4] [5 6]]

# 水平合并
hstack_arr = np.hstack((arr1, arr2.T))
print(hstack_arr)  # 輸出:[[1 2 5] [3 4 6]]

b) 數(shù)組的分割

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

# 垂直分割
vsplit_arr = np.vsplit(arr, 2)
print(vsplit_arr)  # 輸出兩個2x3的數(shù)組

# 水平分割
hsplit_arr = np.hsplit(arr, 3)
print(hsplit_arr)  # 輸出三個2x1的數(shù)組

8. 布爾索引和條件過濾

NumPy 支持布爾條件篩選和索引操作。

arr = np.array([1, 2, 3, 4, 5])
print(arr[arr > 3])  # 輸出:[4 5]

# 條件賦值
arr[arr > 3] = 0
print(arr)  # 輸出:[1 2 3 0 0]

9. 常用的統(tǒng)計函數(shù)

NumPy 提供了豐富的統(tǒng)計函數(shù),方便對數(shù)組進行統(tǒng)計計算。

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

print(np.mean(arr))  # 平均值:3.0
print(np.sum(arr))   # 總和:15
print(np.std(arr))   # 標準差:1.414
print(np.min(arr))   # 最小值:1
print(np.max(arr))   # 最大值:5

10. 隨機數(shù)生成

NumPy 的 random 模塊提供了生成隨機數(shù)的功能。

# 生成一個[0, 1)之間的隨機浮點數(shù)
print(np.random.rand())

# 生成一個服從標準正態(tài)分布的隨機數(shù)
print(np.random.randn())

# 生成一個指定范圍內(nèi)的隨機整數(shù)
print(np.random.randint(0, 10, (3, 3)))  # 輸出一個3x3的隨機整數(shù)矩陣

11. 廣播機制

NumPy 具有廣播(broadcasting)機制,是指當操作的兩個數(shù)組形狀不同,但其中一個數(shù)組的形狀可以通過重復某些維度的元素來匹配另一個數(shù)組的形狀時,NumPy 會自動進行元素擴展,執(zhí)行操作。

# 一個 1x3 數(shù)組和一個 3x1 數(shù)組相加
a = np.array([1, 2, 3])
b = np.array([[1], [2], [3]])

# 廣播機制:將b廣播為 [1, 2, 3],然后執(zhí)行加法
result = a + b
print(result)
# 輸出:
# [[2 3 4]
#  [3 4 5]
#  [4 5 6]]

12. 數(shù)組的矩陣運算

NumPy 中的矩陣運算功能包括矩陣乘法、矩陣轉(zhuǎn)置、求逆等常見的線性代數(shù)操作。特別適用于科學計算和機器學習中使用的線性代數(shù)方法。

a) 矩陣乘法

@ 符號或 np.dot() 函數(shù)可用于矩陣乘法。

# 定義兩個矩陣
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

# 矩陣乘法
C = A @ B
print(C)
# 輸出:
# [[19 22]
#  [43 50]]

# 使用dot函數(shù)
D = np.dot(A, B)
print(D)
# 輸出結(jié)果與上面相同

b) 矩陣轉(zhuǎn)置

# 矩陣轉(zhuǎn)置
A_T = A.T
print(A_T)
# 輸出:
# [[1 3]
#  [2 4]]

d) 計算行列式

使用 np.linalg.det() 計算矩陣的行列式。

A = np.array([[1, 2], [3, 4]])
det_A = np.linalg.det(A)
print(det_A)  # 輸出:-2.0

e) 特征值和特征向量

使用 np.linalg.eig() 來計算矩陣的特征值和特征向量。

A = np.array([[1, 2], [3, 4]])
eigenvalues, eigenvectors = np.linalg.eig(A)

print("特征值:", eigenvalues)
print("特征向量:", eigenvectors)
# 輸出:
# 特征值: [-0.37228132  5.37228132]
# 特征向量:
# [[-0.82456484 -0.41597356]
#  [ 0.56576746 -0.90937671]]

12. 數(shù)組的排序和條件篩選

a) 排序

使用 np.sort() 函數(shù)對數(shù)組進行排序。該函數(shù)會返回一個排序后的數(shù)組,而不會修改原數(shù)組。

a = np.array([3, 1, 2, 4])
sorted_a = np.sort(a)
print(sorted_a)  # 輸出:[1 2 3 4]

b) 條件篩選

NumPy 提供了靈活的條件篩選操作,可以用布爾數(shù)組來選擇滿足條件的元素。

# 創(chuàng)建一個數(shù)組
a = np.array([1, 2, 3, 4, 5])

# 篩選出大于2的元素
filtered_a = a[a > 2]
print(filtered_a)  # 輸出:[3 4 5]

# 使用where條件篩選
b = np.where(a > 2, a, -1)  # 大于2的保持原值,否則設為-1
print(b)  # 輸出:[-1 -1  3  4  5]

總結(jié) 

到此這篇關(guān)于numpy在python中用法的文章就介紹到這了,更多相關(guān)python中numpy用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Pandas中迭代DataFrame行的方法總結(jié)

    Pandas中迭代DataFrame行的方法總結(jié)

    Python是進行數(shù)據(jù)分析的一種很好的語言,主要是因為以數(shù)據(jù)為中心的Python包的奇妙生態(tài)系統(tǒng),本文主要為大家介紹了如何在Pandas中迭代DataFrame中的行,有需要的可以參考下
    2023-09-09
  • python驗證碼識別教程之利用滴水算法分割圖片

    python驗證碼識別教程之利用滴水算法分割圖片

    這篇文章主要給大家介紹了關(guān)于python驗證碼識別教程之利用滴水算法分割圖片的相關(guān)資料,文章中通過示例代碼介紹的非常詳細,對大家的學習或者具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-06-06
  • Python利用ElementTree模塊處理XML的方法詳解

    Python利用ElementTree模塊處理XML的方法詳解

    ElementTree是python的XML處理模塊,它提供了一個輕量級的對象模,下面這篇文章就來給大家介紹了關(guān)于Python利用ElementTree模塊處理XML的方法,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-08-08
  • python中pip安裝、升級以及升級固定的包

    python中pip安裝、升級以及升級固定的包

    我們知道python有大量的第三方庫,這也是python的優(yōu)勢之一,pip就是python整的軟件包管理系統(tǒng),類似于Linux平臺的yum倉庫,下面這篇文章主要給大家介紹了關(guān)于python中pip安裝、升級以及升級固定包的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • 一文詳細NumPy中np.empty的用法

    一文詳細NumPy中np.empty的用法

    np.empty是NumPy庫中一個強大但潛在危險的工具,本文主要介紹了一文詳細NumPy中np.empty的用法,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • OpenCV實現(xiàn)相機標定

    OpenCV實現(xiàn)相機標定

    這篇文章主要為大家詳細介紹了OpenCV實現(xiàn)相機標定,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Python一行代碼識別增值稅發(fā)票實現(xiàn)示例

    Python一行代碼識別增值稅發(fā)票實現(xiàn)示例

    這篇文章主要為大家介紹了Python一行代碼識別增值稅發(fā)票實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • python中redis的安裝和使用

    python中redis的安裝和使用

    本文給大家介紹的是在Python中安裝和使用redis數(shù)據(jù)庫的方法以及簡單示例,有需要的小伙伴可以參考下
    2016-12-12
  • 解決Python中導入自己寫的類,被劃紅線,但不影響執(zhí)行的問題

    解決Python中導入自己寫的類,被劃紅線,但不影響執(zhí)行的問題

    這篇文章主要介紹了解決Python中導入自己寫的類,被劃紅線,但不影響執(zhí)行的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • python數(shù)據(jù)類型強制轉(zhuǎn)換實例詳解

    python數(shù)據(jù)類型強制轉(zhuǎn)換實例詳解

    這篇文章主要介紹了python數(shù)據(jù)類型強制轉(zhuǎn)換實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06

最新評論