這8個NumPy函數可以解決90%的常見問題

deephub 發佈 2023-12-23T06:59:55.628115+00:00

# Generate an array of 5 values from 0 to 10。numpy.wheres:一個條件函數,根據給定條件返回數組中滿足條件的元素的索引或值。

NumPy是一個用於科學計算和數據分析的Python庫,也是機器學習的支柱。可以說NumPy奠定了Python在機器學習中的地位。NumPy提供了一個強大的多維數組對象,以及廣泛的數學函數,可以對大型數據集進行有效的操作。這裡的「大」是指數百萬行。

Numpy快速而高效的原因是底層的C代碼,這比使用Python進行數組的操作要快上幾百倍,並且隨著數據量級的上升而上升。

本文中整理了一些可以解決常見問題的主要的NumPy函數。

1、創建數組

numpy.array:創建新的NumPy數組

# Create an array using np.array()
arr = np.array([1, 2, 3, 4, 5])
print(arr)
Ouput: [1 2 3 4 5]

numpy.zeros:創建一個以零填充的數組。

# Create a 2-dimensional array of zeros
arr = np.zeros((3, 4))


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

類似的還有numpy.ones:創建一個都是1的數組 / numpy.empty:在不初始化數組元素的情況下創建數組。

使用numpy.random:生成隨機數組的函數。

# Generate a random integer between 0 and 9
rand_int = np.random.randint(10)
print(rand_int)

numpy.linspace:在指定範圍內生成均勻間隔的數字。

# Generate an array of 5 values from 0 to 10 (inclusive)
arr = np.linspace(0, 10, 5)
# Print the array
print(arr)
[ 0. 2.5 5. 7.5 10. ]

numpy.range:用間隔的值創建數組。

# Generate an array from 0 to 10 (exclusive) with step size 1
arr = np.arange(0, 10, 2)
# Print the array
print(arr)
[1 3 5 7 9]

2、查看數組信息

numpy.shape:返回一個表示數組形狀的元組。

numpy.ndim:返回數組的維度數。

numpy.dtype:獲取數組中元素的數據類型。可以是int型,float型,bool型等等。

3、數組操作函數

numpy.reshape:改變數組的形狀。

# Create a 1-dimensional array
arr = np.array([1, 2, 3, 4, 5, 6])
# Reshape the array to a 2x3 matrix
reshaped_arr = np.reshape(arr, (2, 3))


[4 5 6]]

numpy.transpose:用於排列數組的維度。它返回一個軸調換後的新數組。

# Create a 2-dimensional array
arr = np.array([[1, 2, 3],
[4, 5, 6]])
# Transpose the array
transposed_arr = np.transpose(arr)
[[1 4]
[2 5]
[3 6]]

numpy.concatate:沿現有軸連接數組。

# Create two 1-dimensional arrays
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
# Concatenate the arrays along axis 0 (default)
concatenated_arr = np.concatenate((arr1, arr2))

numpy.split:分割數據,numpy.resize:改變數組的形狀和大小。

numpy.vstack:將多個數組垂直堆疊以創建一個新數組。

# Create two 1-dimensional arrays
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
# Vertically stack the arrays
stacked_arr = np.vstack((arr1, arr2))
[[1 2 3]
[4 5 6]]

numpy.hstack:與vstack類似,但是是水平堆疊數組。

4、數學函數

numpy.sum:計算數組元素的和。

numpy.mean:計算數組的算術平均值。

numpy.max:返回數組中的最大值。

numpy.min:返回數組中的最小值。

numpy.abs:計算元素的絕對值。

numpy.exp:計算所有元素的指數。

numpy.subtract: 對兩個數組的對應元素進行減法運算。

numpy.multiply: 對兩個數組的對應元素進行乘法運算。

numpy.divide: 對兩個數組的對應元素進行除法運算。

numpy.sin: 計算數組中每個元素的正弦值。

numpy.cos: 計算數組中每個元素的餘弦值。

numpy.log: 計算數組中每個元素的自然對數(以e為底的對數)。

5、統計函數

numpy.std:計算數組的標準差。

# Create a 1-dimensional array
arr = np.array([1, 2, 3, 4, 5])
# Compute the standard deviation of the array
std = np.std(arr)
1.4142135623730951

numpy.var:計算數組的方差。

numpy.histogram:計算一組數據的直方圖。

numpy.percentile:計算數組的第n個百分位數。它返回低於給定百分比的數據的值。

data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# Calculate the 50th percentile (median) of the data
median = np.percentile(data, 50)
# Calculate the 25th and 75th percentiles (quartiles) of the data
q1 = np.percentile(data, 25)
q3 = np.percentile(data, 75)
Median: 5.5
Q1: 3.25
Q3: 7.75

numpy.corcoef:計算兩個數組之間的相關係數。numpy.mean: 計算數組元素的平均值。numpy.median: 計算數組元素的中位數。

numpy.random.rand:在區間[0,1]內從均勻分布生成隨機數數組

# Generate a 1-dimensional array of random numbers
random_array = np.random.rand(5)
[0.35463311 0.67659889 0.5865293 0.77127035 0.13949178]

numpy.random.normal:從正態(高斯)分布生成隨機數

# Generate a random number from a normal distribution
random_number = np.random.normal()
-0.6532785285205665

6、線性代數函數

numpy.dot:計算兩個數組的點積。

# Create two arrays
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# Compute the dot product of the arrays
dot_product = np.dot(a, b)
32

numpy.linalg.inv:計算一個方陣的逆, numpy.linalg.eig:一個方陣的特徵值和特徵向量。numpy.linalg.solve:求解一個線性方程組。

7、排序函數

numpy.sort:沿指定軸返回數組的排序副本

# Create a 2D array
arr = np.array([[3, 1, 5], [2, 4, 6]])
# Sort the array along the second axis (columns)
sorted_arr = np.sort(arr, axis=1)
[[1 3 5]
[2 4 6]]

numpy.argsort:返回按升序對數組排序的索引

# Create an array
arr = np.array([3, 1, 5, 2, 4])
# Get the indices that would sort the array
sorted_indices = np.argsort(arr)
[1 3 0 4 2]

8、其他一些高級的函數

numpy.unique:在數組中查找唯一的元素。

arr = np.array([2, 1, 3, 2, 1, 4, 5, 4])
# Get the unique elements of the array
unique_values = np.unique(arr)
[1 2 3 4 5]

numpy.fft:傅立葉變換的函數。

numpy.ma:供對掩碼數組的支持。

  • numpy.ma.array:從現有的數組或序列創建一個掩碼數組。
  • numpy.ma.masked_array:從現有數組和掩碼中創建一個掩碼數組。
  • numpy.ma.mask:表示掩碼數組中的掩碼值。
  • numpy.ma.masked_invalid:屏蔽數組中無效的(NaN, Inf)元素。
  • numpy.ma.masked_greate, numpy.ma.masked_less:掩碼大於或小於給定值的元素。

arr = np.array([1, 2, 3, np.nan, 5])
# Create a masked array by masking the invalid values
masked_arr = ma.masked_invalid(arr)
[1 2 3 5]

numpy.apply_along_axis:沿著數組的特定軸應用函數。

numpy.wheres:一個條件函數,根據給定條件返回數組中滿足條件的元素的索引或值。

condition = np.array([True, False, True, False])
# Create two arrays
array_true = np.array([1, 2, 3, 4])
array_false = np.array([5, 6, 7, 8])
result = np.where(condition, array_true, array_false)
[1 6 3 8]

以上就是Numpy最經常被使用的函數,希望對你有所幫助。

作者:alimejor

關鍵字: