【Python】Numpy庫近50個常用函數詳解和示例,可作為工具手冊使用

本文以yolo系列代碼為基礎,在其中查找用到的numpy函數,包含近50個函數,本文花費多天,三萬多字,通過豐富的函數原理和示例對這些函數進行詳解。以幫助大家理解和使用。

目錄

  • np.array()
    • 運行示例
  • np.asarray()
    • 函數解析
    • 運行示例
      • 列表轉換為 NumPy 數組
      • 元組轉換為 NumPy 數組
  • np.random.uniform()
    • 函數解析
    • 運行示例
  • np.arange()
    • 函數解析
    • 運行示例
  • np.clip()
    • 函數解析
    • 運行示例
  • np.append()
    • 函數解析
    • 運行示例
      • 不使用 axis 參數:
      • 使用 axis =0:
      • 使用 axis =1
  • np.mod()
    • 函數解析
    • 運行示例
  • np.eye()
    • 函數解析
    • 運行示例
      • 創建2*2矩陣
      • 創建4*5矩陣
  • np.zeros()
    • 函數解析
    • 運行示例
  • np.ones()
    • 函數解析
    • 運行示例
  • np.concatenate()
    • 函數解析
    • 運行示例
  • np.random.beta()
    • 函數解析
    • 運行示例
  • np.maximum()
    • 函數解析
    • 運行示例
  • np.maximum.accumulate()
    • 函數解析
    • 運行示例
      • 例子1
      • 例子2
  • np.minimum()
    • 函數解析
    • 運行示例
  • np.full()
    • 函數解析
    • 運行示例
  • np.ascontiguousarray()
    • 函數解析
    • 運行示例
  • np.random.seed()
    • 函數解析
    • 運行示例
  • np.stack()
    • 函數解析
    • 運行示例
  • np.unique
    • 函數解析
    • 運行示例
  • np.zeros_like
    • 函數解析
    • 運行示例
  • np.save ()
    • 函數解析
    • 運行示例
  • np.load ()
    • 函數解析
    • 運行示例
  • np.floor()
    • 函數解析
    • 運行示例
  • np.ceil()
    • 函數解析
    • 運行示例
  • np.flipud()
    • 函數解析
    • 運行示例
  • np.fliplr()
    • 函數解析
    • 運行示例
  • np.hstack()
    • 函數解析
    • 運行示例
      • 一維數組
      • 二維數組
  • np.vstack()
    • 函數解析
    • 運行示例
  • np.bincount()
    • 函數解析
    • 運行示例
  • np.argmax()
    • 函數解析
    • 運行示例
      • 一維數組
      • 二維數組(默認行為)
      • 二維數組(指定軸)
  • np.argmin()
    • 函數解析
    • 運行示例
      • 一維數組
      • 二維數組(默認行為)
      • 二維數組(指定軸)
  • np.argsort()
    • 函數解析
    • 運行示例
      • 一維數組排序索引
      • 二維數組排序索引
      • 使用排序索引重新構造數組
  • np.set_printoptions()
    • 函數解析
    • 運行示例
      • 設置浮點數的精度
      • 設置數組元素的閾值
      • 設置每行的最大字符數
  • np.loadtxt()
    • 函數解析
    • 運行示例
      • 用`.`號分隔數據的文本文件
      • 加載包含注釋的文本文件,并跳過前三行
  • np.linspace()
    • 函數解析
    • 運行示例
  • np.copy()
    • 函數解析
    • 運行示例
  • np.interp()
    • 函數解析
    • 運行示例
  • np.ndarray()
    • 函數解析
    • 運行示例
  • np.fromfile()
    • 函數解析
    • 運行示例
  • np.convolve()
    • 函數解析
    • 運行示例
      • 卷積運算
  • np.trapz()
    • 函數解析
    • 運行示例
  • np.where()
    • 函數解析
    • 運行示例
      • 單條件
      • 多條件
  • np.sum()
    • 函數解析
    • 運行示例
  • np.nan()
    • 函數解析
    • 運行示例
  • np.log()
    • 函數解析
    • 運行示例
  • np.linalg.lstsq()
    • 函數解析
    • 運行示例
  • np.empty()
    • 函數解析
    • 運行示例
  • 結束語

np.array()

np.array()函數是NumPy庫中創建數組的主要方法,它接受一組參數,每個參數都可以是數組,公開數組接口的任何對象,或者任何(嵌套)序列。

np.array()函數的作用是將輸入的對象(或對象序列)轉換為一個新的NumPy數組。

函數原型:
numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)參數詳解:object:可以是一個列表、元組、字典或者另一個 NumPy 數組。也可以是公開數組接口的任何對象,或者任何(嵌套)序列。
dtype:可選參數,用來指定數組元素的類型。例如,np.array([1, 2, 3]) 默認情況下元素的類型是 int,但如果你指定了 dtype=np.float32,那么元素類型就會變成 float32。
copy:可選參數,默認為 True。如果為 True,那么會創建一個新的數組,復制輸入的對象。如果為 False,那么可能會共享數據,即改變原數據也會影響返回的數組。
order:可選參數,默認為 'K'。這決定了數據的存儲順序。'K' 代表 Fortran 的存儲順序(行優先),'C' 代表 C 的存儲順序(列優先)。
subok:可選參數,默認為 False。如果為 True,那么返回的數組將是輸入對象的子類。如果為 False,那么返回的數組將是基類數組。
ndmin:可選參數,默認為 0。這決定了返回的數組的最小維度數。例如,如果你指定了 ndmin=2,那么即使輸入的是一個標量,也會返回一個一維數組。

運行示例

import numpy as np# 從列表創建數組
a = np.array([1, 2, 3])
print(a)  # 輸出:[1 2 3]# 從元組創建數組
b = np.array((1, 2, 3))
print(b)  # 輸出:[1 2 3]# 從字典創建數組(假設所有的鍵都是相同的值)
my_dict = {'a': 1, 'b': 2, 'c': 3}
c = np.array(list(my_dict.values()))
print(c)  # 輸出:[1 1 1]# 從另一個 NumPy 數組創建數組
d = np.array([a, b, c])
print(d)  # 輸出:[array([1, 2, 3]) array([1, 2, 3]) array([1, 1, 1])]# 使用 dtype 參數指定元素類型
e = np.array([1, 2, 3], dtype=np.float32)
print(e)  # 輸出:[1. 2. 3.]

在這里插入圖片描述

np.asarray()

np.asarray 是 NumPy 庫中的一個函數,用于將一個具有不同類型的數據集合(例如 Python 列表、元組或 NumPy 數組)轉換為一個 NumPy 數組。

函數解析

函數原型:
numpy.asarray(a)參數:
a:一個可迭代對象(例如 Python 列表、元組或其他 NumPy 數組)。返回值:
返回一個新的 NumPy 數組,其中包含 a 中的數據,但以 NumPy 數組的形式表示。

注意事項:

如果 a 已經是一個 NumPy 數組,那么 np.asarray 不會進行任何轉換,直接返回該數組。
如果 a 是一個 Python 列表或其他不可直接轉換為 NumPy 數組的對象,np.asarray 會嘗試將其轉換為 NumPy 數組。
如果 a 是一個可迭代對象,但其中的元素不是同一種類型,那么 np.asarray 將返回一個 object 類型的數組,其中包含原始對象的引用。

運行示例

列表轉換為 NumPy 數組

import numpy as np
list1 = [1, 2, 3, 4, 5]
arr1 = np.asarray(list1)
print(arr1)

輸出:

[1 2 3 4 5]

元組轉換為 NumPy 數組


import numpy as nptuple1 = (1, 2, 3, 4, 5)
arr2 = np.asarray(tuple1)
print(arr2)

輸出:

[1 2 3 4 5]

np.random.uniform()

np.random.uniform() 是 NumPy 庫中的一個函數,用于生成一個指定形狀的數組,數組元素的值均勻分布在指定的范圍內。

函數解析

函數原型:
np.random.uniform(low, high, size)參數詳解:
low:生成隨機數的最小值(含)。默認為0。
high:生成隨機數的最大值(不含)。不能小于 low。默認為1。
size:生成的隨機數數組的形狀。可以是正整數、負整數或零,分別代表的形狀為(n,),(n,n),(n,n,n)等。默認為None,代表生成的隨機數數組形狀為一個。
返回值:生成的隨機數數組。

運行示例

(1)生成一個元素范圍在0到1之間的隨機數數組,形狀為(3,):

import numpy as np
print(np.random.uniform(0, 1, 3))

輸出的一種:

[0.59394381 0.64440999 0.91008711]

(2)生成一個元素范圍在1到10之間的隨機數數組,形狀為(2,2):

import numpy as np
print(np.random.uniform(1, 10, (2, 2)))

輸出的一種:

[[7.2666767  6.93297231][9.65006062 8.67068568]]

np.arange()

np.arange() 是 NumPy 庫中的一個函數,用于生成一個包含一定范圍內整數的數組。這個函數在 Python 的內置 range() 函數的基礎上提供了更多的靈活性和功能。

函數解析

函數原型為:
np.arange([start,] stop[, step,], dtype=None)參數詳解:start:起始值。默認為0。
stop:結束值。生成的數組將包含到此值之前的所有整數。請注意,數組的最后一個元素將是 stop-1。
step:步長。默認為1。生成的數組的每個元素之間的差值就是這個步長。
dtype:可選參數,生成的數組的數據類型。如果未指定,則默認為當前 NumPy 數據類型。返回值:一個包含一定范圍內整數的 NumPy 數組。

運行示例

(1)生成從0到9(包含0,不包含10)的整數數組,步長為2:

import numpy as np
print(np.arange(0, 10, 2))

輸出:

[0 2 4 6 8]

(2)生成一個長度為10的數組,元素從1開始,到100結束(不包含100),步長為10:

import numpy as np
print(np.arange(1, 100, 10))

輸出:

[ 1 11 21 31 41 51 61 71 81 91]

np.clip()

np.clip()是NumPy庫中的一個函數,它用于將數組中的元素限制在指定的范圍內。這個函數接受兩個參數,即最小值和最大值,所有超過這個范圍的元素都會被限制在這個范圍內。

函數解析

函數原型為:
np.clip(a, a_min, a_max)參數詳解:a:輸入數組。
a_min:限制下限。所有小于a_min的a中的元素將被替換為a_min。
a_max:限制上限。所有大于a_max的a中的元素將被替換為a_max。
返回值:一個新的數組,其中的元素被限制在a_min和a_max之間。

運行示例

import numpy as np# 創建一個隨機數組
arr = np.random.rand(5) * 100
print("Original array:", arr)# 使用np.clip()將數組中的元素限制在0到10之間
clipped_arr = np.clip(arr, 0, 10)
print("Clipped array:", clipped_arr)

輸出:

Original array: [89.01030861  7.78381296 52.43930124 70.35602011 62.99517335]
Clipped array: [10.          7.78381296 10.         10.         10.        ]

在這個示例中,原始數組中的元素被限制在0到10之間。所有超過這個范圍的元素都被替換為對應的邊界值(小于0的元素被替換為0,大于10的元素被替換為10)。

np.append()

np.append() 是 NumPy 庫中的一個函數,它用于將一個或多個數組添加到另一個數組的末尾。這個函數不會改變原始數組,而是返回一個新的數組。

函數解析

函數原型為:
np.append(arr, values[, axis])參數詳解:
arr:要添加其他數組的數組。
values:要添加到 arr 的數組或列表。這可以是多個數組或列表。
axis:可選參數,定義了 values 中的數組沿著哪個軸添加到 arr 中。默認值為 None,這意味著 values 中的數組將被展平并添加到 arr 的末尾。如果指定了 axis,則 values 中的數組將被添加到 arr 的指定軸上。

運行示例

不使用 axis 參數:

import numpy as nparr = np.array([1, 2, 3])
values = np.array([4, 5, 6])appended_arr = np.append(arr, values)
print(appended_arr) 

輸出:

[1 2 3 4 5 6]

使用 axis =0:

import numpy as nparr = np.array([[1, 2], [3, 4]])
values = np.array([5, 6])# 將 values 轉換為二維數組
values_2d = np.reshape(values, (1, -1))appended_arr = np.append(arr, values_2d, axis=0)
print(appended_arr)  

輸出:

[[1 2][3 4][5 6]]

使用 axis =1

import numpy as nparr = np.array([[1, 2], [3, 4]])
values = np.array([5, 6])# 將 values 轉換為二維數組
values_2d = np.reshape(values, (-1, 1))appended_arr = np.append(arr, values_2d, axis=1)
print(appended_arr)

輸出:

[[1 2 5][3 4 6]]

注意:按照行或列拼接時注意要相同的維度,0是行拼接,1是列。

np.mod()

np.mod() 是 NumPy 庫中的一個函數,它用于計算兩個數的模(余數)。該函數的語法為 np.mod(x, y),其中 x 和 y 是要計算模的兩個數。

函數解析

函數的工作方式與 Python 內置的 % 運算符類似,但有一個重要的區別:np.mod() 函數可以處理浮點數和非整數,而 Python 的 % 運算符只能處理整數。

運行示例

import numpy as npx1 = np.array([10, 10.5])
x2 = np.array([3, 3.2])result = np.mod(x1, x2)
print(result)

輸出:

[1.  0.9]

在上面的示例中,我們使用 np.mod() 函數計算了 x1 對 x2 的模,并將結果存儲在 result 數組中。

np.eye()

函數解析

函數原型:
np.eye(n, m=None, k=0, dtype=<class 'NoneType'>)參數:n:整數,表示要生成的單位矩陣的行數或列數,取決于是否指定了m參數。如果m未指定,則n既是行數也是列數。
m:整數,表示要生成的單位矩陣的列數或行數,取決于是否指定了n參數。如果n未指定,則m既是列數也是行數。
k:整數,表示對角線偏離中心的偏移量。默認值為0,表示對角線居中。
dtype:數據類型,默認為None。如果指定了數據類型,則生成矩陣的數據類型將被指定為該類型。
該函數返回一個單位矩陣,其中對角線上的元素為1,其他位置的元素為0。通過調用 np.eye(),我們可以創建不同大小和維度的單位矩陣。

運行示例

創建2*2矩陣

mport numpy as npidentity_matrix = np.eye(2)
print(identity_matrix)

輸出:

[[1. 0.][0. 1.]]

創建4*5矩陣

import numpy as npidentity_matrix = np.eye(4, 5,dtype=np.float32)
print(identity_matrix)

輸出:

[[1. 0. 0. 0. 0.][0. 1. 0. 0. 0.][0. 0. 1. 0. 0.][0. 0. 0. 1. 0.]]

np.zeros()

np.zeros() 是 NumPy 庫中的一個函數,用于創建一個形狀和大小都為零的數組。該函數的主要參數是形狀,可以接受的形式有:一個整數,一個元組,或者一個表示形狀的數組。

函數解析

函數的詳細解釋如下:np.zeros(shape)
shape:一個整數或一個元組,指定要創建的數組的形狀。例如,np.zeros(3) 會創建一個長度為3的零向量,np.zeros((2,3)) 會創建一個2行3列的全零矩陣。
函數返回的是一個填充了0的數組。

運行示例

import numpy as np# 創建一個長度為10的零向量
v = np.zeros(10)
print(v)
# 結果:[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]# 創建一個3行2列的全零矩陣
m = np.zeros((3,2))
print(m)
# 結果:[[0. 0.] [0. 0.] [0. 0.]]# 創建一個復雜的多維數組
n = np.zeros((2,3,4))
print(n)
# 結果:[[[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]] [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]]

輸出:

[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[[0. 0.][0. 0.][0. 0.]]
[[[0. 0. 0. 0.][0. 0. 0. 0.][0. 0. 0. 0.]][[0. 0. 0. 0.][0. 0. 0. 0.][0. 0. 0. 0.]]]

np.ones()

np.ones() 是 NumPy 庫中的一個函數,用于創建一個全為1的數組。該函數的主要參數是形狀,可以接受的形式有:一個整數,一個元組,或者一個表示形狀的數組。

函數解析

與np.zeros()函數類似

np.ones(shape)shape:一個整數或一個元組,指定要創建的數組的形狀。例如,np.ones(3) 會創建一個長度為3的全1向量,np.ones((2,3)) 會創建一個2行3列的全1矩陣。
函數返回的是一個填充了1的數組。

運行示例

import numpy as np# 創建一個長度為10的全1向量
v = np.ones(10)
print(v)
# 結果:[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]# 創建一個3行2列的全1矩陣
m = np.ones((3,2))
print(m)
# 結果:[[1. 1.] [1. 1.] [1. 1.]]# 創建一個復雜的多維數組
n = np.ones((2,3,4))
print(n)
# 結果:[[[1. 1. 1.] [1. 1. 1.] [1. 1. 1.]] [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.]]]

輸出:

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

np.concatenate()

np.concatenate() 是 NumPy 庫中的一個函數,用于將兩個或更多的數組連接在一起。這個函數接受一個元組作為輸入,該元組中的每個元素都是一個要連接的數組。

函數解析

np.concatenate((a1, a2, ...), axis=0)a1, a2, ...:一個或多個要連接的數組。
axis:連接操作沿著哪個軸進行。如果 axis=0,那么數組將會在第一個軸上進行連接,這是默認值。如果 axis=1,那么數組將會在第二個軸上進行連接,以此類推。注意,axis 參數必須是整數。函數返回一個新的數組,該數組包含所有輸入數組在指定軸上的連接。

運行示例

import numpy as np# 創建兩個一維數組
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
#按行拼接
# 在第一個軸(默認)上連接這兩個數組
c = np.concatenate((a, b))
print(c)print("*************")
#按列拼接
# 創建兩個二維數組
a2 = np.array([[1, 2], [3, 4]])
b2 = np.array([[5, 6], [7, 8]])
# 按列拼接這兩個數組
c2 = np.concatenate((a2, b2), axis=1)
print(c2)

輸出:

[1 2 3 4 5 6]
*************
[[1 2 5 6][3 4 7 8]]

np.random.beta()

np.random.beta() 是 NumPy 庫中的一個函數,用于生成服從 Beta 分布的隨機數。Beta 分布是一種連續概率分布,通常用于描述在一定范圍內介于兩個值之間的隨機變量。

函數解析

函數:np.random.beta(a, b)a:代表 Alpha 分布的參數,也稱作形狀參數1。
b:代表 Beta 分布的參數,也稱作形狀參數2。返回值:
從 Beta 分布中抽取的隨機樣本。

運行示例

import numpy as np
import matplotlib.pyplot as plt# 設置隨機種子以確保結果可復現
np.random.seed(0)# 設置參數 a 和 b
a = 2.0
b = 5.0# 生成服從 Beta 分布的隨機數
samples = np.random.beta(a, b, 1000)# 使用 matplotlib 繪制 Beta 分布圖
plt.hist(samples, bins=30, density=True, alpha=0.6, color='g')
plt.xlabel('Value')
plt.ylabel('Probability Density')
plt.title('Beta Distribution')
plt.show()

在這里插入圖片描述
在上面的示例中,我們設置了 a=2.0 和 b=5.0 作為 Beta 分布的參數,生成了 1000 個服從該分布的隨機數,并使用 Matplotlib 繪制了它們的直方圖。

np.maximum()

np.maximum() 是 NumPy 庫中的一個函數,用于比較兩個或更多個數組元素,并返回每個元素的最大值。

函數解析

函數原型:
np.maximum(x1, x2, *args)參數:
x1, x2, *args:要進行比較的數值或數組。可以輸入任意數量的參數。返回值:
返回一個相同的形狀和類型與輸入參數的數組,其中每個元素都是輸入參數在該位置上的最大值。

運行示例

import numpy as np# 對于兩個數值
print(np.maximum(3, 4))  # 對于numpy數組
arr1 = np.array([1, 2, 3])
arr2 = np.array([3, 2, 1])print(np.maximum(arr1, arr2)) 

輸出:

4
[3 2 3]

在上面的示例中,我們看到 np.maximum() 函數可以用于兩個數值或兩個numpy數組。對于兩個數值,它返回較大的那個數值。對于numpy數組,它在每個位置上比較兩個數組的元素,并返回一個新數組,其中每個元素都是輸入數組在該位置上的最大值。

np.maximum.accumulate()

np.maximum.accumulate 是 NumPy 庫中的一個函數,它用于計算輸入數組中元素的累積最大值。這個函數接受一個輸入數組,然后返回一個累積最大值數組。

函數解析

函數原型為:numpy.maximum.accumulate(array)
其中 array 是輸入的數組。

運行示例

例子1

import numpy as nparr = np.array([1, 2, 3, 4, 5])
result = np.maximum.accumulate(arr)
print(result)

輸出結果:

[1 2 3 4 5]

這個例子中,輸入數組 [1, 2, 3, 4, 5] 的累積最大值數組仍然是 [1, 2, 3, 4, 5],因為每個元素本身都是它之前的最大值。

例子2

import numpy as nparr = np.array([5, 3, 8, 9, 6])
result = np.maximum.accumulate(arr)
print(result)

輸出:

[5 5 8 9 9]

np.minimum()

該函數與np.maximum()原理類似,是 NumPy 庫中的一個函數,用于比較兩個或更多個數組元素,并返回每個元素的最小值。

函數解析

函數原型:
np.minimum(x1, x2, *args)參數:
x1, x2, *args:要進行比較的數值或數組。可以輸入任意數量的參數。返回值:
返回一個相同的形狀和類型與輸入參數的數組,其中每個元素都是輸入參數在該位置上的最小值。

運行示例

import numpy as np# 對于兩個數值
print(np.minimum(3, 4))  # 對于numpy數組
arr1 = np.array([1, 2, 3])
arr2 = np.array([3, 2, 1])
print(np.minimum(arr1, arr2)) 

輸出:

3
[1 2 1]

在上面的示例中,我們看到 np.minimum() 函數可以用于兩個數值或兩個numpy數組。對于兩個數值,它返回較小的那個數值。對于numpy數組,它在每個位置上比較兩個數組的元素,并返回一個新數組,其中每個元素都是輸入數組在該位置上的最小值。

np.full()

np.full() 是 NumPy 庫中的一個函數,用于創建一個具有指定形狀和填充值的數組。

函數解析

函數原型:
np.full(shape, fill_value, dtype=None)參數:
shape:一個表示數組形狀的元組或整數。例如,(3, 4) 表示一個 34 列的二維數組。
fill_value:要填充在數組中的值。可以是任何 NumPy 數據類型。
dtype:可選參數,表示數組的數據類型。如果未指定,則默認為 None,即根據 fill_value 的類型進行推斷。返回值:
返回一個具有指定形狀和填充值的 NumPy 數組。

運行示例

import numpy as np# 創建一個形狀為 (3, 4) 的二維數組,填充值為 0
arr = np.full((3, 4), 0)
print(arr)# 創建一個形狀為 (2, 3) 的二維數組,填充值為 1.5,數據類型為 float
arr = np.full((2, 3), 1.5, dtype=float)
print(arr)

輸出:

[[0 0 0 0][0 0 0 0][0 0 0 0]]
[[1.5 1.5 1.5][1.5 1.5 1.5]]

在上面的示例中,我們看到 np.full() 函數可以用于創建一個具有指定形狀和填充值的數組。第一個示例中,我們創建了一個形狀為 (3, 4) 的二維數組,并將所有元素填充為 0。第二個示例中,我們創建了一個形狀為 (2, 3) 的二維數組,并將所有元素填充為 1.5,并指定了數據類型為 float。

np.ascontiguousarray()

np.ascontiguousarray() 是 NumPy 庫中的一個函數,用于將輸入的數組重新構造為連續的內存塊。這個函數在處理需要連續內存的函數(如 np.dot() 或 np.fft.fft2())時非常有用。

函數解析

函數原型:
np.ascontiguousarray(a, dtype=None)參數:
a:輸入數組。可以是任何形狀和類型的數組。
dtype:可選參數,表示返回數組的數據類型。如果未指定,則默認為 None,即使用與輸入數組相同的類型。返回值:
返回一個連續的內存塊表示的數組,與輸入數組 a 具有相同的形狀和值。

運行示例

import numpy as np# 創建一個形狀為 (3, 4) 的二維數組,填充值為 0
arr = np.zeros((3, 4))
print("Original array:")
print(arr)# 使用 np.ascontiguousarray() 重構數組
arr_contiguous = np.ascontiguousarray(arr)
print("Reconstructed array:")
print(arr_contiguous)

輸出:

Original array:
[[0. 0. 0. 0.][0. 0. 0. 0.][0. 0. 0. 0.]]
Reconstructed array:
[[0. 0. 0. 0.][0. 0. 0. 0.][0. 0. 0. 0.]]

在上面的示例中,我們首先創建了一個形狀為 (3, 4) 的二維數組,并將所有元素填充為 0。然后,我們使用 np.ascontiguousarray() 函數將該數組重構為連續的內存塊表示。可以看到,返回的數組與原始數組具有相同的形狀和值。

np.random.seed()

np.random.seed() 是 NumPy 庫中的一個函數,用于設置隨機數生成器的種子。種子是一個整數或一個整數序列,用于控制隨機數生成器的行為,以確保生成的隨機數序列是可重復的。

函數解析

函數原型:
np.random.seed(seed)參數:
seed:可選參數,用于設置隨機數生成器的種子。可以是整數或一個整數序列。如果未指定,則默認為 None,此時隨機數生成器會生成一個隨機種子。返回值:
該函數沒有返回值。

運行示例

import numpy as np# 設置隨機數生成器的種子為 100
np.random.seed(100)# 生成一個隨機數
random_number = np.random.rand()
print("Random number:", random_number)# 設置隨機數生成器的種子為 None(默認)
np.random.seed()# 再次生成一個隨機數
random_number = np.random.rand()
print("Random number:", random_number)

輸出:

Random number: 0.5434049417909654
Random number: 0.7352229465659721

在上面的示例中,我們首先使用 np.random.seed(100) 設置隨機數生成器的種子為 100,并生成一個隨機數。然后,我們使用 np.random.seed() 將種子重置為默認值(None),并再次生成一個隨機數。可以看到,由于種子不同,生成的隨機數也不同。因此,通過設置種子,我們可以確保在多次運行程序時得到相同的隨機數序列。

np.stack()

np.stack() 是 NumPy 庫中的一個函數,用于將一個或多個數組沿著新的維度堆疊在一起。這個函數返回一個新數組,其中包含原始數組中的所有元素,但它們沿著新的維度排列。

函數解析

函數原型:
np.stack(arrays, axis=0)參數:
arrays:一個或多個數組,這些數組將被堆疊在一起。
axis:可選參數,表示沿著哪個維度進行堆疊。默認為 0,表示在第一個維度(行)上進行堆疊。返回值:
返回一個新的 NumPy 數組,其中包含原始數組中的所有元素,但它們沿著新的維度排列。

運行示例

import numpy as np# 創建兩個一維數組
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])# 使用 np.stack() 將它們堆疊在一起,得到一個二維數組
c = np.stack((a, b))
print("Stacked array:")
print(c)#按列堆疊
c1 = np.stack((a, b),axis=1)
print("Stacked array1:")
print(c1)

輸出:

Stacked array:
[[1 2 3][4 5 6]]
Stacked array1:
[[1 4][2 5][3 6]]

在上面的示例中,我們創建了兩個一維數組 a 和 b,然后使用 np.stack() 將它們堆疊在一起,得到一個二維數組 c。可以看到,c 是一個二維數組,其中包含了 a 和 b 中的所有元素,但它們沿著新的維度排列。

np.unique

np.unique 是 NumPy 庫中的一個函數,用于從數組中返回唯一值,并按升序排序。它返回一個包含唯一值的數組,以及一個包含這些唯一值在原數組中首次出現的索引的數組。

函數解析

函數原型:
np.unique(arr, return_index=False, return_inverse=False)參數:
arr:輸入數組,可以是多維數組。
return_index:可選參數,如果為 True,則除了返回唯一值之外,還返回這些唯一值在原數組中首次出現的索引。默認為 False。
return_inverse:可選參數,如果為 True,則除了返回唯一值之外,還返回一個索引數組,該數組可用于將唯一值數組重新構造為原始數組。默認為 False。返回值:
返回一個包含唯一值的數組,以及可選的索引數組或索引數組的組合(根據參數 return_index 和 return_inverse 的設置)。

運行示例

import numpy as np# 創建一個一維數組
arr = np.array([2, 5, 1, 2, 4, 3, 5])# 使用 np.unique() 找到唯一值并按升序排序
unique_values = np.unique(arr)
print("Unique values:", unique_values)# 使用 np.unique() 找到唯一值并按升序排序,并返回首次出現的索引
unique_values, indices = np.unique(arr, return_index=True)
print("Unique values:", unique_values)
print("Indices:", indices)# 使用 np.unique() 找到唯一值并按升序排序,并返回一個索引數組,用于重新構造原始數組
unique_values, inverse = np.unique(arr, return_inverse=True)
print("Unique values:", unique_values)
print("Inverse:", inverse)

輸出:

Unique values: [1 2 3 4 5]
Unique values: [1 2 3 4 5]
Indices: [2 0 5 4 1]
Unique values: [1 2 3 4 5]
Inverse: [1 4 0 1 3 2 4]

在上面的示例中,我們首先創建了一個包含重復值的一維數組 arr。然后使用 np.unique() 找到 arr 中的唯一值并按升序排序,將結果存儲在變量 unique_values 中。接下來,我們使用 return_index=True 和 return_inverse=True 參數來獲取更多信息。當 return_index=True 時,函數返回一個包含唯一值及其在原數組中首次出現的索引的元組。當 return_inverse=True 時,函數返回一個索引數組,該數組可用于將唯一值數組重新構造為原始數組(根據原數組中的值在排序中的位置,如原數組中第一個值2,在排序中是在第二個位置,則最后生成的索引則為1,即得到的新數組第一個值為1)。

np.zeros_like

np.zeros_like 是一個 NumPy 函數,它創建一個與給定數組形狀相同、元素值全為零的新數組。這個函數對于快速復制形狀并填充零非常有用。

函數解析

函數原型:
np.zeros_like(a, dtype=None, order='K', subok=False)參數解釋:
a: 輸入數組。函數將創建與這個數組形狀相同的新數組。
dtype: 數據類型,可選參數。如果未指定,則默認為 None,這意味著新數組的數據類型將與輸入數組相同。
order: 排序方式,可選參數。如果為 'K',則按照輸入數組的內存順序創建新數組。如果為 'C',則使用行優先方式創建數組。默認值為 'K'。
subok: 如果為 True,則允許創建子類的實例。默認值為 False。返回值:
返回一個新數組,其形狀與輸入數組相同,所有元素值都為零。

運行示例

import numpy as np# 創建一個形狀為 (3, 3) 的隨機數組
a = np.random.rand(3, 3)
print("Original array:", a)# 創建一個與 a 形狀相同、元素值全為零的新數組
b = np.zeros_like(a)
print("Zero array:", b)

輸出:

Original array:[[0.03055982 0.10393955 0.52521327][0.24149545 0.23694233 0.41798272][0.72414372 0.26958905 0.2894202 ]]
Zero array:[[0. 0. 0.][0. 0. 0.][0. 0. 0.]]

這段代碼將首先創建一個形狀為 (3, 3) 的隨機數組 a,然后使用 np.zeros_like 函數創建一個與 a 形狀相同、元素值全為零的新數組 b。

np.save ()

np.save() 是 NumPy 庫中的一個函數,用于將數組保存到 .npy 文件中。這種文件格式可以用于在之后重新加載數組。

函數解析

函數原型:
numpy.save(file, arr, allow_pickle=True, fix_imports=True, do_compression=False)參數:
file:要保存到的 .npy 文件的路徑。
arr:要保存的數組。
allow_pickle:布爾值,決定是否允許 pickling 數據。默認為 True。
fix_imports:布爾值,決定是否應該嘗試修復不兼容的導入。默認為 True。
do_compression:布爾值,決定是否應該對文件進行壓縮。默認為 False。

運行示例

import numpy as np# 創建一個數組
arr = np.array([[1, 2], [3, 4]])# 將數組保存到 .npy 文件
np.save('my_array.npy', arr)

同級別文件夾中生成了一個“my_array.npy”文件,內容為:
在這里插入圖片描述
用記事本打開有些亂碼。

np.load ()

np.load 是 NumPy 庫中的一個函數,用于從 .npy 文件中加載數組。這種文件是由 np.save 函數創建的。np.load 函數非常適合用于恢復之前保存的數組,以便可以在之后的代碼中使用。

函數解析

函數原型:
numpy.load(file, mmap_mode=None, allow_pickle=True, fix_imports=True, encoding='ASCII')參數:
file:要加載的 .npy 文件的路徑。
mmap_mode:可選參數,用于指定內存映射模式的文件加載。默認值是 None。
allow_pickle:布爾值,決定是否允許加載 pickle 數據。默認為 True。
fix_imports:布爾值,決定是否應該嘗試修復不兼容的導入。默認為 True。
encoding:字符串,用于指定編碼方式。默認為 'ASCII'

運行示例

import numpy as np# 創建一個數組
arr = np.array([[1, 2], [3, 4]])# 將數組保存到 .npy 文件
np.save('my_array.npy', arr)
# 加載 .npy 文件
loaded_arr = np.load('my_array.npy')# 打印加載的數組
print(loaded_arr)

輸出:

[[1 2][3 4]]

np.floor()

np.floor() 是 NumPy 庫中的一個函數,用于對輸入的數字或數組進行向下取整。具體來說,np.floor(x) 會返回不大于 x 的最大整數。如果 x 是一個數組,那么 np.floor(x) 會返回一個新的數組,其中每個元素都是 x 中相應元素的最大整數。

函數解析

函數原型為:
numpy.floor(x)
其中 x 是輸入的數字或數組。

運行示例

import numpy as np# 對單個數字進行向下取整
print(np.floor(3.14))  
print("**********")
print(np.floor(3)) 
print("**********")# 對數組進行向下取整
print(np.floor([3.14, 2.71, 1.41]))  
print("**********")
print(np.floor([[3.14, 2.71], [1.41, 1.69]]))  

輸出:

3.0
**********
3.0
**********
[3. 2. 1.]
**********
[[3. 2.][1. 1.]]

np.ceil()

np.ceil() 是 NumPy 庫中的一個函數,用于對輸入的數字或數組進行向上取整。具體來說,np.ceil(x) 會返回大于等于 x 的最小整數。如果 x 是一個數組,那么 np.ceil(x) 會返回一個新的數組,其中每個元素都是 x 中相應元素的最小整數。

函數解析

函數原型為:
numpy.ceil(x)
其中 x 是輸入的數字或數組。

運行示例

import numpy as np
# 對單個數字進行向上取整
print(np.ceil(3.14)) 
print("**********")
print(np.ceil(3)) 
print("**********")# 對數組進行向上取整
print(np.ceil([3.14, 2.71, 1.41]))  
print("**********")
print(np.ceil([[3.14, 2.71], [1.41, 1.69]]))  

輸出:

4.0
**********
3.0
**********
[4. 3. 2.]
**********
[[4. 3.][2. 2.]]

np.flipud()

np.flipud() 是 NumPy 庫中的一個函數,用于沿著垂直軸翻轉數組。具體來說,np.flipud(a) 會返回一個新數組,其中原數組 a 的每一行都被翻轉。

函數解析

函數原型為:
numpy.flipud(a)
其中 a 是輸入的數組。

運行示例

import numpy as np# 創建一個 3x3 的二維數組
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("Original array:")
print(a)# 使用 np.flipud() 翻轉數組
b = np.flipud(a)
print("Flipped array:")
print(b)

輸出:

Original array:
[[1 2 3][4 5 6][7 8 9]]
Flipped array:
[[7 8 9][4 5 6][1 2 3]]

np.fliplr()

np.fliplr() 是 NumPy 庫中的一個函數,用于沿著水平軸翻轉數組。具體來說,np.fliplr(a) 會返回一個新數組,其中原數組 a 的每一列都被翻轉。

函數解析

函數原型為:
numpy.fliplr(a)
其中 a 是輸入的數組。

運行示例

import numpy as np# 創建一個 3x3 的二維數組
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("Original array:")
print(a)# 使用 np.fliplr() 翻轉數組
b = np.fliplr(a)
print("Flipped array:")
print(b)

輸出結果:

Original array:
[[1 2 3][4 5 6][7 8 9]]
Flipped array:
[[3 2 1][6 5 4][9 8 7]]

np.hstack()

np.hstack() 是 NumPy 庫中的一個函數,用于將兩個或更多的數組沿著水平軸(即列)連接起來。這個函數會沿著水平軸(即列)將輸入的數組堆疊起來。這意味著輸出的數組的列數將是輸入數組的列數之和,而行數將是輸入數組中最大行數的值。

函數解析

函數原型為:
numpy.hstack(tup)
其中 tup 是一個元組,包含了你想要堆疊的數組。

運行示例

一維數組

import numpy as np# 創建兩個一維數組
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])# 使用 np.hstack() 將它們堆疊起來
c = np.hstack((a, b))
print(c)  

輸出:

[1 2 3 4 5 6]

二維數組

import numpy as np# 創建兩個二維數組
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])# 使用 np.hstack() 將它們堆疊起來
c = np.hstack((a, b))print(c)

輸出:

[[1 2 5 6][3 4 7 8]]

np.vstack()

在NumPy中,用于按行堆疊(即在水平方向上堆疊)的函數是np.vstack()。這個函數將兩個或更多的數組沿著垂直軸(即行)堆疊起來。

函數解析

數原型為:
numpy.vstack(tup)
其中tup是一個元組,包含了你想要堆疊的數組。

運行示例

import numpy as np# 創建兩個二維數組
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
# 使用 np.vstack() 將它們堆疊起來
c = np.vstack((a, b))
print("按行堆疊:")
print(c)

輸出:

按行堆疊:
[[1 2][3 4][5 6][7 8]]

np.bincount()

np.bincount()函數是NumPy庫中的一個函數,用于統計數組中每個元素出現的次數。

函數解析

函數原型為:
numpy.bincount(x[, minlength])
參數:
x:一個數組,其中包含要統計的元素。
minlength:可選參數,指定返回結果的長度。如果指定了此參數,那么當x的長度小于minlength時,將會用0補充結果。返回值:
這個函數會返回一個長度與x中不同元素個數相同的數組,其中每個元素表示相應元素在x中出現的次數。

運行示例

import numpy as np# 創建一個一維數組
arr = np.array([0, 1, 1, 2, 3, 3, 3, 2])# 使用 np.bincount() 統計每個元素出現的次數
counts = np.bincount(arr)print("元素出現的次數:")
print(counts)

輸出:

元素出現的次數:
[1 2 2 3]

np.argmax()

np.argmax() 是 NumPy 庫中的一個函數,它返回輸入數組中最大值的索引。這是一個非常實用的函數,特別是在處理多維數組時。

函數解析

函數原型為:
numpy.argmax(a, axis=None)參數:
a:輸入的數組。
axis:可選參數,表示沿著哪個軸進行操作。如果 axis 為 None,則函數會返回輸入數組中最大值的索引。如果指定了 axis,則函數會返回該軸上最大值的索引。例如,如果 axis 等于 1,函數會返回每一行中最大值的索引。

運行示例

一維數組

import numpy as np# 創建一個一維數組
arr = np.array([1, 3, 5, 2, 4])
# 使用 np.argmax() 找到最大值的索引
max_index = np.argmax(arr)print("最大值的索引:", max_index)

輸出:

最大值的索引: 2

二維數組(默認行為)

import numpy as np# 創建一個二維數組
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 使用 np.argmax() 找到最大值的索引(默認行為是沿著最后一維)
max_index = np.argmax(arr)print("最大值的索引:", max_index) 

輸出:

最大值的索引: 8

二維數組(指定軸)

0是列,1是行

import numpy as np# 創建一個二維數組
arr = np.array([[1, 2, 3], [4, 5, 6], [2, 8, 9]])# 使用 np.argmax() 沿著第一維找到最大值的索引(axis=0)
max_index_axis0 = np.argmax(arr, axis=0)
print("沿著第一維最大值的索引:", max_index_axis0)# 使用 np.argmax() 沿著第二維找到最大值的索引(axis=1)
max_index_axis1 = np.argmax(arr, axis=1)
print("沿著第二維最大值的索引:", max_index_axis1)

輸出:

沿著第一維最大值的索引: [1 2 2]
沿著第二維最大值的索引: [2 2 2]

np.argmin()

np.argmin() 是 NumPy 庫中的一個函數,它返回輸入數組中最小元素的索引。該函數的行為會根據輸入數組的維度而變化。

函數解析

運行示例

一維數組

import numpy as np# 創建一個一維數組
arr = np.array([1, 3, 5, 2, 4])
# 使用 np.argmin() 找到最小值的索引
min_index = np.argmin(arr1)print("最大值的索引:", max_index)

輸出:

最小值的索引: 0

二維數組(默認行為)

import numpy as np
# 創建一個二維數組
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 使用 np.argmin() 找到最小值的索引(默認行為是沿著最后一維)
min_index = np.argmin(arr)print("最小值的索引:", min_index)  

輸出:

最大值的索引: 0

二維數組(指定軸)

0是列,1是行

import numpy as np# 創建一個二維數組
arr2 = np.array([[3, 2, 1], [1, 5, 6], [7, 8, 9]])# 使用 np.argmin() 沿著第一維找到最小值的索引(axis=0)
min_index_axis0 = np.argmin(arr2, axis=0)
print("沿著第一維最小值的索引:", min_index_axis0)# 使用 np.argmin() 沿著第二維找到最小值的索引(axis=1)
min_index_axis1 = np.argmin(arr2, axis=1)
print("沿著第二維最小值的索引:", min_index_axis1)  

輸出:

沿著第一維最小值的索引: [1 0 0]
沿著第二維最小值的索引: [2 0 0]

np.argsort()

np.argsort() 是 NumPy 庫中的一個函數,它返回輸入數組中元素的排序索引。這個函數非常有用,特別是在需要排序數組并獲取排序索引時。

函數解析

函數原型為:
numpy.argsort(a, kind='quicksort', axis=-1, order=None)參數:
a:輸入的數組。
kind:排序算法的類型。可以是 'quicksort''heapsort''stable' 等。默認是 'quicksort'。
axis:沿著哪個軸進行排序。默認是 -1,表示在最后一個軸上排序。
order:排序的順序。可以是 'ascending'(升序)或 'descending'(降序)。

這個函數返回一個整數數組,表示輸入數組中每個元素在排序后數組中的索引位置。這個數組可以用于重新構造排序后的數組,或者用于其他需要排序索引的操作。默認是升序

運行示例

一維數組排序索引

import numpy as np# 創建一個一維數組
arr = np.array([3, 1, 2])# 使用 np.argsort() 獲取排序索引
sort_index = np.argsort(arr)print("排序索引:", sort_index)  

輸出:

排序索引: [1 2 0]

二維數組排序索引

import numpy as np# 創建一個二維數組
arr = np.array([[3, 1, 2], [5, 4, 7], [6, 8, 9]])# 使用 np.argsort() 沿著最后一維獲取排序索引
sort_index = np.argsort(arr, axis=-1)print("排序索引:", sort_index) 

輸出:

排序索引: [[1 2 0][1 0 2][0 1 2]]

使用排序索引重新構造數組

import numpy as np# 創建一個二維數組
arr = np.array([[3, 1, 2], [5, 4, 7], [6, 8, 9]])# 使用 np.argsort() 沿著最后一維獲取排序索引
sort_index = np.argsort(arr, axis=-1)
print("重新構造的數組:", sort_index )# 使用排序索引重新構造數組
sorted_arr = arr[np.argsort(sort_index)]print("重新構造的數組:", sorted_arr)

輸出:

重新構造的數組: [[1 2 0][1 0 2][0 1 2]]
重新構造的數組: [[[6 8 9][3 1 2][5 4 7]][[5 4 7][3 1 2][6 8 9]][[3 1 2][5 4 7][6 8 9]]]

np.set_printoptions()

np.set_printoptions 是 NumPy 庫中的一個函數,它用于設置打印數組時的默認選項。這可以幫助你控制 NumPy 打印輸出的格式和精度。

函數解析

函數原型:
numpy.set_printoptions(precision, threshold, edgeitems, linewidth, max_line_width)參數:
precision:控制浮點數的精度,即小數點后的位數。默認值是 None,表示使用默認精度。
threshold:控制數組元素的總數,當元素數量大于該閾值時,會使用省略號表示。默認值是 None,表示不使用省略號。
edgeitems:控制數組邊緣的元素數量,當數組邊緣的元素數量小于該值時,會在邊緣添加省略號。默認值是 3。
linewidth:控制每行的最大字符數,超過該值的元素會被分割到下一行。默認值是 75。
max_line_width:控制每行的最大行數,超過該值的元素會被分割到多行。默認值是 None,表示不進行分割。返回值:
該函數沒有返回值。

運行示例

設置浮點數的精度

import numpy as npnp.set_printoptions(precision=4)
print(np.array([1.23456789]))

輸出:

[1.2346]

設置數組元素的閾值

當元素個數大于10時,使用省略號。

import numpy as np
#控制元素個數
np.set_printoptions(threshold=10)
print(np.arange(20))
[ 0  1  2 ... 17 18 19]

設置每行的最大字符數

最大字符數設置為10

import numpy as npnp.set_printoptions(linewidth=10)
print(np.array([1, 2, 3, 4, 5]))

輸出:

[1 2 3 45]

np.loadtxt()

np.loadtxt 是 NumPy 庫中的一個函數,用于從文本文件中加載數據并返回一個 NumPy 數組。

函數解析

函數原型:
numpy.loadtxt(filename, dtype=float, delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0)參數:
filename:要加載數據的文件名,可以是字符串類型。
dtype:返回的數組的數據類型,默認為浮點型(float)。也可以傳入其他 NumPy 數據類型,如 int、str 等。
delimiter:指定分隔符,用于將文本文件中的數據拆分為不同列。默認為 None,表示根據輸入文件的數據類型進行自動推斷。常見的分隔符包括逗號(',')、制表符('\t')等。
converters:一個字典,用于指定某些列數據的轉換函數。字典的鍵為列索引,值為轉換函數。例如,設置 converters={0: lambda x: int(x)} 將第一列數據轉換為整數類型。
skiprows:要跳過的行數,用于忽略文件開頭的注釋或無關數據。默認為 0,表示不跳過任何行。
usecols:一個切片對象,用于指定要加載的列范圍。例如,設置 usecols=(0, 2, 4) 將只加載第一、第三和第五列數據。
unpack:布爾值,用于指示是否將返回的數組解包為單獨的變量。默認為 False,表示不解包。
ndmin:指定返回的數組的維度最小值。默認為 0,表示根據數據自動推斷數組維度。

data.csv文件內容為:
在這里插入圖片描述

運行示例

.號分隔數據的文本文件

import numpy as np
data = np.loadtxt('data.csv', delimiter='.')
print(data)

輸出:

[ 6.  8. 10.  1. 12. 45. 23. 14.]

加載包含注釋的文本文件,并跳過前三行

import numpy as npdata = np.loadtxt('data.csv', skiprows=3)
print(data)

輸出:

[ 1. 12. 45. 23. 14.]

np.linspace()

np.linspace 是 NumPy 庫中的一個函數,用于在指定的間隔內生成等間距的數值序列。它返回一個 NumPy 數組,其中包含指定數量的數字,這些數字沿著標準數軸均勻分布。

函數解析

函數原型:
np.linspace(start, stop, num, endpoint=True, retstep=False, dtype=None)參數說明:
start:序列的起始值。默認值為 0。
stop:序列的終止值。這是唯一必需的參數。
num:生成的數字序列中元素的數量。默認值為 50。
endpoint:如果為 True,stop 值將被包含在結果中。默認值為 True。
retstep:如果為 True,返回 (num, start, stop, endpoint) 的元組。默認值為 False。

運行示例

import numpy as nparr = np.linspace(0, 1, 10)
print(arr)arr1 = np.linspace(0, 1, 10, endpoint=True)
print(arr1)  arr2 = np.linspace(2, 10, num=5, endpoint=True)
print(arr2)  

輸出:

[0.         0.11111111 0.22222222 0.33333333 0.44444444 0.555555560.66666667 0.77777778 0.88888889 1.        ]
[0.         0.11111111 0.22222222 0.33333333 0.44444444 0.555555560.66666667 0.77777778 0.88888889 1.        ]
[ 2.  4.  6.  8. 10.]

np.copy()

np.copy 是 NumPy 庫中的一個函數,用于創建指定數組的副本。這個函數返回的是輸入數組的一個拷貝,而不是對原始數組的引用。這意味著對返回的拷貝進行的任何更改不會影響到原始數組。

函數解析

函數原型:
numpy.copy(arr)參數:
arr:要復制的數組。返回值:
返回輸入數組的副本。返回的數組是原始數組的一個全新副本,對它的更改不會影響原始數組。

運行示例

import numpy as np# 創建一個數組
arr = np.array([1, 2, 3, 4, 5])
print("原始數組:")
print(arr)# 使用 np.copy 復制數組
arr_copy = np.copy(arr)
print("復制的數組:")
print(arr_copy)# 修改復制的數組
arr_copy[0] = 100
print("修改后的復制數組:")
print(arr_copy)# 原始數組未受影響
print("原始數組:")
print(arr)

輸出:

原始數組:
[1 2 3 4 5]
復制的數組:
[1 2 3 4 5]
修改后的復制數組:
[100   2   3   4   5]
原始數組:
[1 2 3 4 5]

np.interp()

np.interp 是 NumPy 庫中的一個函數,用于執行一維線性插值。它可以在已知的數據點之間進行插值,生成新的數據點。

函數解析

函數原型:
numpy.interp(x, xp, fp)參數:
x:要進行插值的數據點,可以是一個一維數組或一個單獨的數值。
xp:已知的數據點,是一個一維數組,表示 x 的值。
fp:已知的數據點的函數值,是一個一維數組,與 xp 具有相同的長度,表示對應于每個 x 的函數值。返回值:
返回插值后得到的新數據點的函數值。

np.interp通過獲取xp與fp之間的對應線性函數關系,估計x處的對應值來進行線性插值。

運行示例

import numpy as np# 已知數據點
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 3, 5, 7, 11])# 進行插值,得到新的數據點對應的函數值
x_new = np.array([1.5, 2.5, 3.5])
y_new = np.interp(x_new, x, y)print(y_new)  # 輸出 [2.5 4.  6. ]

輸出:

[2.5 4.  6. ]

np.ndarray()

np.ndarray 是 NumPy 庫中的一個類,用于創建和操作多維數組對象。np.ndarray 可以包含不同類型的數據,例如整數、浮點數、字符串等。

函數解析

class numpy.ndarray:def __init__(self, shape, dtype=float, buffer=None, offset=0, strides=None, order=None):# 構造函數,用于創建 ndarray 對象self.shape = shape  # 數組的形狀self.dtype = dtype  # 數組的數據類型self.buffer = buffer  # 數組數據的內存塊self.offset = offset  # 數組數據在內存塊中的偏移量self.strides = strides  # 數組每個維度在內存中的跨度self.order = order  # 數組數據的存儲方式(默認值:None)
常用參數:
shape:返回數組的形狀。例如:arr.shape = (3,4) 表示數組是一個 34 列的二維數組。
dtype:返回數組的數據類型。例如:arr.dtype = int 表示數組中的元素都是整數類型。

運行示例

 import numpy as np# 創建一個 2x3x4 的三維數組
data = np.ndarray((2, 3, 4), dtype=int)# 為數組元素賦值
for i in range(data.shape[0]):for j in range(data.shape[1]):for k in range(data.shape[2]):data[i, j, k] = i + j + kprint("三維數組:")
print(data)

輸出:

[[[0 1 2 3][1 2 3 4][2 3 4 5]][[1 2 3 4][2 3 4 5][3 4 5 6]]]

np.fromfile()

np.fromfile() 是 NumPy 庫中的一個函數,它從一個二進制文件中讀取數據并返回一個數組。這個函數特別適合處理大型數據集,因為它可以直接從文件中讀取數據,而不需要將整個文件加載到內存中。

函數解析

函數原型:

函數原型:
numpy.fromfile(file, dtype=float, count=-1, sep='')參數解釋:
file:需要讀取的二進制文件。
dtype:期望的數據類型。例如,np.int32、np.float64 等。默認值是 float。
count:要讀取的元素數量。如果設置為 -1,將讀取所有剩余的元素。默認值是 -1。
sep:元素之間的分隔符。在 NumPy 中,默認分隔符是 None,表示根據數據類型確定分隔符。

運行示例

import numpy as np# 創建一個包含數據的二進制文件
data = np.array([1, 2, 3, 4, 5], dtype=np.int32).tofile('data.bin')# 從文件中讀取數據并存儲為 NumPy 數組
arr = np.fromfile('data.bin', dtype=np.int32)
print(arr)  arr1 = np.fromfile('data.bin', dtype=np.int32, count=3)
print(arr1)  

輸出:

[1 2 3 4 5]
[1 2 3]

np.convolve()

np.convolve 是 NumPy 庫中的一個函數,用于執行卷積運算。卷積是一種在信號處理、圖像處理和機器學習等領域廣泛應用的運算。

函數解析

函數原型:
numpy.convolve(in1, in2, mode='full', axis=-1)參數:
in1:第一個輸入數組。
in2:第二個輸入數組。
mode:卷積的模式,有四種模式可選:'full''valid''same''linear'。默認為 'full''full':輸出是完整的重疊區域。
'valid':輸出僅包含完全重疊的點。
'same':輸出是輸入的長度相同的中央部分。
'linear':使用線性濾波器,輸出是輸入的長度相同的中央部分,但邊緣效應被線性濾波器處理。
axis:進行卷積操作的軸。默認為 -1,表示在最后一個軸上操作。

運行示例

卷積運算

import numpy as npvector1 = np.array([1, 2, 3])
vector2 = np.array([4, 5, 6])
convolution = np.convolve(vector1, vector2, mode='full')
print(convolution) 

輸出:

 [ 4 13 28 27 18]

np.trapz()

np.trapz 是 NumPy 庫中的一個函數,用于計算梯形積分。這個函數在數值積分中非常有用,特別是在那些不能輕易找到解析解的問題中。

梯形法是一種數值積分方法,其基本思想是在被積函數曲線的下方“畫梯形”,然后用梯形的面積近似代替所求的積分。

函數解析

可以這樣形象地理解 np.trapz:想象你在平面上鋪設了多個“梯形”小塊(由函數在特定點的取值決定),這些梯形的寬度都是 dx ,高度就是函數的取值。然后,把這些梯形的面積加起來,就得到了這個函數在該區間上的積分值。

函數原型:
numpy.trapz(x, y=None, dx=1.0)參數說明:
x:一維的數組或者列表,作為積分的下限。
y:一維的數組或者列表,作為積分的上限。如果未提供,默認為 None,此時函數會返回從 x[0] 到 x[-1] 的積分。
dx:間距的長度,如果 x 是等間隔的,那么 dx 應該被設定為 1.0。默認值為 1.0。返回值:
返回一個浮點數,表示所求的梯形積分值。

運行示例

import numpy as np
x = np.linspace(0, 3, 100)  # 創建一個等間隔的數組,作為積分的下限和上限
y = x**2  # 定義函數 f(x) = x^2 在每個點的取值integral = np.trapz(y, x)  # 計算積分
print(f"The integral of f(x) = x^2 from 0 to 3 is: {integral}")  # 輸出積分的結果

輸出:

The integral of f(x) = x^2 from 0 to 3 is: 9.000459136822775

上述示例中,我們使用了 np.linspace(0, 3, 100) 來生成等間隔的數組 x,這只是為了方便我們手動構造一個具體的函數。在實際應用中,你可能會直接使用函數在其他點的取值作為 y。

np.where()

np.where() 是一個非常有用的函數,它返回輸入數組中滿足給定條件的元素的索引。這個函數在很多情況下都非常有用,比如在數據分析和處理中進行條件判斷。

函數解析

函數原型:
numpy.where(condition[, x, y])參數說明:
condition:當只使用一個條件時,它是一個用于測試每個元素的布爾(真/假)數組。當使用兩個條件時,它是一個(n,2)數組,每行包含一個布爾測試。
x, y:當只使用一個條件時,x 和 y 是用于替換滿足和不滿足條件的元素的數組。當使用兩個條件時,x 和 y 是用于替換每行的元素的數組。返回值:
當只使用一個條件時,返回一個包含滿足條件的元素的數組。當使用兩個條件時,返回一個包含替換每行元素的數組。

運行示例

單條件

import numpy as np# 創建一個隨機數組
arr = np.random.randint(0, 10, size=(5,))
print("Original array:", arr)# 使用np.where()找出所有大于5的元素,并用9替換它們
new_arr = np.where(arr > 5, 9, arr)
print("New array with replaced values:", new_arr)

輸出:

Original array: [2 2 6 1 9]
New array with replaced values: [2 2 9 1 9]

多條件

import numpy as np# 創建一個隨機數組
arr = np.random.randint(0, 10, size=(5,2))
print("Original array:", arr)# 使用np.where()找出第一列大于5的元素,并用9替換它們;同時找出第二列小于6的元素,并用11替換它們
new_arr = np.where(np.c_[arr[:,0] > 5, arr[:,1] < 6], [9, 11], arr)
print("New array with replaced values:", new_arr)

輸出:

Original array: [[8 3][3 6][3 1][5 0][2 3]]
New array with replaced values: [[ 9 11][ 3  6][ 3 11][ 5 11][ 2 11]]

np.sum()

np.sum() 是 NumPy 庫中的一個函數,用于計算數組中元素的總和。它接受一個或多個數組作為輸入,并返回這些數組元素的和。

函數解析

函數原型:
numpy.sum(array, axis=None, dtype=None, out=None, keepdims=False, initial=0, where=True)參數說明:
array:輸入的數組。可以是標量(在調用 np.sum() 時將計算其和),也可以是 NumPy 數組。
axis:可選參數,表示沿哪個軸進行求和。默認值是 None,表示對整個數組進行求和。如果輸入的是一個標量,則該參數無效。
dtype:可選參數,表示返回的數組的數據類型。默認值是 None,表示使用與輸入數組相同的數據類型。
out:可選參數,表示輸出的數組。如果提供了一個 out 參數,則求和操作將在這個數組中進行,而不是創建一個新的數組。
keepdims:可選參數,表示是否保持被求和的維度。如果為 True,則返回的數組將保留被求和的維度,這些維度的長度為 1。
initial:可選參數,表示在求和操作中添加到每個元素之前的初始值。默認值是 0。
where:可選參數,表示一個布爾掩碼,決定哪些元素應該被包括在求和操作中。默認值是 True,表示對所有元素進行求和。返回值:
返回一個 NumPy 數組,其中包含輸入數組的元素的和。如果 axis 參數為 None,則返回一個標量。

運行示例

import numpy as np#對一個 NumPy 數組進行求和:
arr = np.array([1, 2, 3, 4, 5])
result = np.sum(arr)
print(result)  #對多個 NumPy 數組進行求和:
import numpy as nparr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
result1 = np.sum([arr1, arr2])
print(result1)  #沿著某個軸進行求和:
import numpy as nparr3 = np.array([[1, 2], [3, 4]])
result3 = np.sum(arr3, axis=0)
print(result3)  

輸出:

15
21
[4 6]

np.nan()

函數解析

np.nan 是 NumPy 庫中的一個特殊值,表示“非數字”(Not a Number)。它是 NaN 的縮寫,是一個IEEE標準,用于表示結果無法定義或無法表示的數學運算。

使用方法:
創建 NaN 值的常用方法就是調用 np.nan 函數。

運行示例

import numpy as np# 使用 np.nan 創建 NaN 數組
nan_array = np.array([1, 2, np.nan, 4])
print(nan_array)

輸出:

[ 1.  2. nan  4.]

np.log()

np.log() 是 NumPy 庫中的一個函數,用于計算自然對數(以 e 為底)。

函數解析

函數原型:
numpy.log(x)參數說明:
x:一個數值或 NumPy 數組,表示要計算其自然對數的值。返回值:
返回輸入值的自然對數。

運行示例

import numpy as np# 計算數字 10 的自然對數
result = np.log(10)
print(result)  array = np.array([-1, 10, 100, 1000])
# 計算這個數組中每個數字的自然對數
result1 = np.log(array)print(result1)  

輸出:

2.302585092994046
[       nan 2.30258509 4.60517019 6.90775528]
C:\Users\SW\Desktop\suishoulian\csdn\numpy_ceshi.py:776: RuntimeWarning: invalid value encountered in logresult1 = np.log(array)

在這個示例中,如果輸入數組中的值是負數或零,那么返回的將是 NaN(因為負數和零的自然對數是未定義的)。

np.linalg.lstsq()

np.linalg.lstsq() 是 NumPy 庫中的一個函數,用于執行最小二乘法擬合線性方程組。它可以找到一個向量 b,使得對于給定的矩陣 A,np.dot(A, b) 盡可能接近 y。

函數解析

函數原型:
numpy.linalg.lstsq(A, y, rcond=None, overwrite_A=False, overwrite_b=False, check_finite=True, det_A=None, normed=True)參數說明:
A:一個 n×m 的矩陣,其中 n 是線性方程組的未知數的數量,m 是方程的數量。
y:一個 n×1 的向量,表示等式右邊的值。
rcond:一個可選參數,用于指定奇異值閾值。如果指定了該參數,那么當使用奇異值分解時,奇異值小于 rcond * sigma_max 的值將被截斷為零,其中 sigma_max 是最大的奇異值。
overwrite_A:一個布爾值,表示是否覆蓋輸入的矩陣 A。
overwrite_b:一個布爾值,表示是否覆蓋輸入的向量 y。
check_finite:一個布爾值,表示是否檢查矩陣 A 和向量 y 中的元素是否為有限值。
det_A:一個可選參數,表示矩陣 A 的行列式值的估計。
normed:一個布爾值,表示是否對解向量 b 進行歸一化。返回值:
返回一個元組 (x, residuals, rank, s = singular_values, rcond),其中:
x:一個 m×1 的向量,表示最小二乘解。
residuals:一個 1-D 數組,表示殘差平方和。
rank:矩陣 A 的秩。
s:一個 1-D 數組,表示 A 的奇異值。
rcond:如果指定了該參數,那么就是使用的奇異值的倒數閾值;否則為 None。

運行示例

import numpy as np# 定義一個矩陣 A 和一個向量 y
A = np.array([[3, 2], [1, 7]])
y = np.array([9, 1])# 使用 np.linalg.lstsq() 求解最小二乘解
x, residuals, rank, s = np.linalg.lstsq(A, y)# 輸出結果
print("最小二乘解:", x)

輸出:

最小二乘解: [ 3.21052632 -0.31578947]

這個示例中,我們有一個 2×2 的矩陣 A 和一個 2×1 的向量 y。我們使用 np.linalg.lstsq() 函數來找到一個向量 x,使得 np.dot(A, x) 最接近 y。輸出結果將顯示找到的最小二乘解

np.empty()

np.empty() 是 NumPy 庫中的一個函數,用于創建一個指定形狀和數據類型的空數組。這個函數不初始化數組元素,因此返回的數組中元素的值是不確定的。

函數解析

函數原型:
numpy.empty(shape, dtype=float, order='C')參數說明:
shape:一個表示數組形狀的元組。例如,(3, 4) 表示一個 34 列的二維數組。
dtype:一個可選參數,表示創建的數組的數據類型。默認值是 float。其他常用的數據類型包括 int、str 等。
order:一個可選參數,表示數組在內存中的存儲方式。默認值是 'C',表示按行優先存儲(類似于 C 語言中的數組)。如果指定為 'F',則表示按列優先存儲(類似于 Fortran 語言中的數組)。返回值:
np.empty() 返回一個新的數組對象,該對象是一個指定形狀和數據類型的空數組。返回的數組中的元素值不確定,因此需要在使用之前進行初始化。

運行示例

import numpy as np# 創建一個形狀為 (3, 4) 的空數組,數據類型為 float
empty_array = np.empty((3, 4), dtype=float)
print(empty_array)

輸出:

[[6.23042070e-307 7.56587584e-307 1.37961302e-306 6.23053614e-307][1.69121639e-306 1.05701279e-307 1.60220393e-306 6.23037996e-307][6.23053954e-307 9.34603679e-307 2.22522596e-306 2.56765117e-312]]

結束語

因搜集來源有限,寫的可能不全,歡迎大家評論補充,后期不定時更新。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/208623.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/208623.shtml
英文地址,請注明出處:http://en.pswp.cn/news/208623.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

unity 2d 入門 飛翔小鳥 場景延續(八)

1、新建c#腳本如下 代碼&#xff0c;在前方生成生成自身圖片并3s后銷毀自身&#xff0c;在碰撞物體后小鳥死亡后不刪除自身 using System.Collections; using System.Collections.Generic; using UnityEngine;public class CopyScene : MonoBehaviour { //要復制的對象public…

Amazon CodeWhisperer 提供新的人工智能驅動型代碼修復、IaC 支持以及與 Visual Studio 的集成...

Amazon CodeWhisperer 的人工智能&#xff08;AI&#xff09;驅動型代碼修復和基礎設施即代碼&#xff08;IaC&#xff09;支持已正式推出。Amazon CodeWhisperer 是一款用于 IDE 和命令行的人工智能驅動型生產力工具&#xff0c;現已在 Visual Studio 中推出&#xff0c;提供預…

uniapp封裝websocket文件(app、h5兼容)

適合場景&#xff1a;只需要發送一次數據&#xff0c;服務器可以實時返回數據進行渲染。 socket文件 let isSocketClose false; // 是否關閉socket let reconnectCount 5; // 重連次數 // let heartbeatInterval ""; // 心跳定時器 let socketTask null; // web…

uniapp實戰 —— 開發微信小程序的調試技巧

手機真機調試微信小程序 開發版和體驗版的小程序&#xff0c;域名沒有備案時想調試接口訪問效果&#xff0c;可以按下述方式操作&#xff1a; 在手機上點右上方三個點&#xff0c;點擊“開發調試”&#xff0c;開啟調試模式&#xff0c;即可真機訪問接口&#xff08;跳過域名校…

《C++新經典設計模式》之第21章 解釋器模式

《C新經典設計模式》之第21章 解釋器模式 解釋器模式.cpp 解釋器模式.cpp #include <iostream> #include <map> #include <stack> #include <vector> #include <cstring> #include <memory> #include <set> #include <sstream&g…

【Vue3從入門到項目實現】RuoYi-Vue3若依框架前端學習——動態路由與菜單欄

菜單欄 若依框架的側邊欄組件通常由菜單項和子菜單組成。 登錄后&#xff0c;會獲取用戶擁有的路由菜單 {"msg": "操作成功","code": 200,"data": [{"name": "System","path": "/system",…

第一百九十六回 通過藍牙發送數據的細節

文章目錄 1. 概念介紹2. 實現方法3. 代碼與效果3.1 示例代碼3.2 運行效果4. 經驗總結我們在上一章回中介紹了"分享三個使用TextField的細節"沉浸式狀態樣相關的內容,本章回中將介紹SliverList組件.閑話休提,讓我們一起Talk Flutter吧。 1. 概念介紹 通過藍牙設備…

[原創]C++98升級到C++20的復習旅途-個人感覺std::string_literals這個東西實現的不太人性化.

[簡介] 常用網名: 豬頭三 出生日期: 1981.XX.XX QQ聯系: 643439947 個人網站: 80x86匯編小站 https://www.x86asm.org 編程生涯: 2001年~至今[共22年] 職業生涯: 20年 開發語言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 開發工具: Visual Studio、D…

git操作:使用vscode集成

git操作方式 其實git操作一般有三種方式 分別是終端命令行,開發工具集成,專業的git可視化工具 我前面幾章說的都是git的命令行操作,今天這篇文章主要是針對開發工具vscode集成git操作進行演示 說明一下,這里之所以選擇vscode,是因為本人用的就是vscode,每個開發工具基本都有…

最新PyTorch機器學習與深度學習實踐技術應用

近年來&#xff0c;隨著AlphaGo、無人駕駛汽車、醫學影像智慧輔助診療、ImageNet競賽等熱點事件的發生&#xff0c;人工智能迎來了新一輪的發展浪潮。尤其是深度學習技術&#xff0c;在許多行業都取得了顛覆性的成果。另外&#xff0c;近年來&#xff0c;Pytorch深度學習框架受…

mysql怎么優化查詢?

從多個維度優化&#xff0c;這里的優化維度有四個&#xff1a;硬件配置、參數配置、表結構設計和SQL語句及索引。 其中 SQL 語句相關的優化手段是最為重要的。 一、硬件配置 硬件方面的優化可以有 對磁盤進行擴容、將機械硬盤換為SSD&#xff0c;或是把CPU的核數往上提升一些…

IDEA中,Archetype的作用

在IntelliJ IDEA中&#xff0c;Archetype&#xff08;原型&#xff09;是一種用于創建項目的模板&#xff0c;它定義了項目的基本結構和初始文件。Archetype允許您通過預先構建好的項目框架來快速創建項目&#xff0c;從而節省了手動創建項目所需的時間和精力。 使用Archetype…

spark鏈接hive時踩的坑

使用spark操作hive&#xff0c;使用metastore連接hive&#xff0c;獲取hive的數據庫時&#xff0c;當我們在spark中創建數據庫的時候&#xff0c;創建成功。 同時hive中也可以看到這個數據庫&#xff0c;建表插入數據也沒有問題&#xff0c;但是當我們去查詢數據庫中的數據時&a…

IDEA 出現問題:Idea-操作多次commit,如何合并為一個并push解決方案

??作者主頁&#xff1a;小虛竹 ??作者簡介&#xff1a;大家好,我是小虛竹。2022年度博客之星評選TOP 10&#x1f3c6;&#xff0c;Java領域優質創作者&#x1f3c6;&#xff0c;CSDN博客專家&#x1f3c6;&#xff0c;華為云享專家&#x1f3c6;&#xff0c;掘金年度人氣作…

Python---繼承

1、什么是繼承 我們接下來來聊聊Python代碼中的“繼承”&#xff1a;類是用來描述現實世界中同一組事務的共有特性的抽象模型&#xff0c;但是類也有上下級和范圍之分&#xff0c;比如&#xff1a;生物 > 動物 > 哺乳動物 > 靈長型動物 > 人類 > 黃種人 從哲學…

prometheus服務發現之consul

文章目錄 前言一、Consul 在這里的作用二、原理三、實現過程安裝 consul節點信息&#xff08;exporter&#xff09;注冊進去consul節點信息&#xff08;exporter&#xff09;從consul解除注冊&#xff1a;prometheus配置consul地址 總結 前言 我們平時使用 prometheus 收集監控…

接口的性能優化(從前端、后端、數據庫三個角度分析)

接口的性能優化&#xff08;前端、后端、數據庫&#xff09; 主要通過三方面進行優化 前端后端數據庫 前端優化 接口拆分 不要搞一個大而全的接口&#xff0c;要區分核心與非核心的接口&#xff0c;不然核心接口就會被非核心接口拖累 或者一個接口中大部分返回都很快&…

通過rc.local開機自啟執行nohup命令運行Flask,nohup.out中沒有Flask請求響應日志

需求 通過修改/etc/rc.d/rc.local&#xff0c;實現開機自啟Flask服務&#xff0c;CentOS 7.9。rc.local參考鏈接1&#xff0c;參考鏈接2。 問題 在/etc/rc.d/rc.local中添加 /home/python/face_jiance/kaijiziqi.sh 在/home/python/face_jiance/kaijiziqi.sh中寫 nohup /…

數據可視化軟件的興起:背后的驅動力

在當今信息時代&#xff0c;數據變得比以往任何時候都更為重要。數據可視化軟件的廣泛應用成為了一種趨勢。那么&#xff0c;為什么越來越多的人選擇使用數據可視化軟件呢&#xff1f;今天我就以自己的工作經驗為基礎&#xff0c;進行簡單的分析。 數據可視化軟件能將枯燥的數…

react-lazyload 的介紹、安裝、使用。

目錄 基本介紹 安裝 使用 基本使用 詳細屬性 基本介紹 react-lazyload 是一個 React 組件&#xff0c;用于延遲加載&#xff08;懶加載&#xff09;頁面上的圖片或其他資源。懶加載是一種優化手段&#xff0c;它允許頁面在初次加載時只加載可視區域內的內容&#xff0c;…