一、引言
NumPy 是 Python 中一个强大的数值计算库,广泛应用于数据分析、机器学习和科学计算等领域。本文将介绍 50 个常用的 NumPy 方法,帮助你更好地掌握这个库的使用。让我们一起开启 NumPy 的魔法之旅吧!
制作万分的不易,如果你觉得这些技巧对你有帮助,不妨点赞和收藏哦!
二、五十个NumPy中最常用方法
1. np.array()
创建一个 NumPy 数组。
import numpy as np arr = np.array([1, 2, 3, 4])
print(arr)
# 输出: [1 2 3 4]
解释:np.array() 用于将列表或其他序列转换为 NumPy 数组。
2. np.zeros()
创建一个指定形状的数组,元素均为零。
zeros_array = np.zeros((2, 3))
print(zeros_array)
# 输出:
# [[0. 0. 0.]
# [0. 0. 0.]]
解释:np.zeros(shape) 创建一个形状为 shape 的数组,所有元素初始化为 0。
3. np.ones()
创建一个指定形状的数组,元素均为一。
ones_array = np.ones((2, 3))
print(ones_array)
# 输出:
# [[1. 1. 1.]
# [1. 1. 1.]]
解释:np.ones(shape) 创建一个形状为 shape 的数组,所有元素初始化为 1。
4. np.empty()
创建一个未初始化的数组,元素的值是随机的。
empty_array = np.empty((2, 3))
print(empty_array)
解释:np.empty(shape) 创建一个形状为 shape 的数组,元素未初始化,值是随机的。
5. np.arange()
创建一个一维数组,包含指定范围内的均匀间隔的值。
range_array = np.arange(0, 10, 2)
print(range_array)
# 输出:
[0 2 4 6 8]
解释:np.arange(start, stop, step) 返回一个数组,包含从 start 到 stop 的值,步长为 step。
6. np.linspace()
在指定的区间内生成均匀间隔的数字。
linspace_array = np.linspace(0, 1, 5)
print(linspace_array)
# 输出:
[0. 0.25 0.5 0.75 1. ]
解释:np.linspace(start, stop, num) 返回 num 个均匀分布在 [start, stop] 之间的值。
7. np.eye()
创建一个单位矩阵。
identity_matrix = np.eye(3)
print(identity_matrix)
# 输出:
# [[1. 0. 0.]
# [0. 1. 0.]
# [0. 0. 1.]]
解释:np.eye(N) 返回一个 N x N 的单位矩阵。
8. np.reshape()
改变数组的形状。
original_array = np.array([1, 2, 3, 4, 5, 6])
reshaped_array = original_array.reshape((2, 3))
print(reshaped_array)
# 输出:
# [[1 2 3]
# [4 5 6]]
解释:np.reshape(array, new_shape) 将数组 array 改变为 new_shape 形状。
9. np.flatten()
将多维数组展平为一维数组。
array = np.array([[1, 2], [3, 4]])
flattened_array = array.flatten()
print(flattened_array)
# 输出: [1 2 3 4]
解释:array.flatten() 返回一个一维数组,包含原数组的所有元素。
10. np.transpose()
对数组进行转置。
array = np.array([[1, 2], [3, 4]])
transposed_array = np.transpose(array)
print(transposed_array)
# 输出:
# [[1 3]
# [2 4]]
解释:np.transpose(array) 返回数组的转置。
11. np.sum()
计算数组元素的总和。
array = np.array([1, 2, 3, 4])
total = np.sum(array)
print(total)
# 输出: 10
解释:np.sum(array) 返回数组所有元素的和。
12. np.mean()
计算数组元素的平均值。
array = np.array([1, 2, 3, 4])
average = np.mean(array)
print(average)
# 输出: 2.5
解释:np.mean(array) 返回数组所有元素的平均值。
13. np.median()
计算数组的中位数。
array = np.array([1, 2, 3, 4])
median = np.median(array)
print(median)
# 输出: 2.5
解释:np.median(array) 返回数组的中位数。
14. np.std()
计算数组的标准差。
array = np.array([1, 2, 3, 4])
std_dev = np.std(array)
print(std_dev)
# 输出: 1.118033988749895
解释:np.std(array) 返回数组元素的标准差。
15. np.var()
计算数组的方差。
array = np.array([1, 2, 3, 4])
variance = np.var(array)
print(variance)
# 输出: 1.25
解释:np.var(array) 返回数组元素的方差。
16. np.max()
计算数组的最大值。
array = np.array([1, 2, 3, 4])
maximum = np.max(array)
print(maximum)
# 输出: 4
解释:np.max(array) 返回数组中的最大值。
17. np.min()
计算数组的最小值。
array = np.array([1, 2, 3, 4])
minimum = np.min(array)
print(minimum)
# 输出: 1
解释:np.min(array) 返回数组中的最小值。
18. np.argmin()
返回数组中最小值的索引。
array = np.array([1, 2, 3, 4])
index_of_min = np.argmin(array)
print(index_of_min)
# 输出: 0
解释:np.argmin(array) 返回数组中最小值的索引。
19. np.argmax()
返回数组中最大值的索引。
array = np.array([1, 2, 3, 4])
index_of_max = np.argmax(array)
print(index_of_max)
# 输出: 3
解释:np.argmax(array) 返回数组中最大值的索引。
20. np.unique()
找出数组中的唯一值。
array = np.array([1, 2, 2, 3, 4])
unique_values = np.unique(array)
print(unique_values)
# 输出: [1 2 3 4]
解释:np.unique(array) 返回数组中的唯一元素。
21. np.concatenate()
连接多个数组。
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
concatenated_array = np.concatenate((array1, array2))
print(concatenated_array)
# 输出: [1 2 3 4 5 6]
解释:np.concatenate((array1, array2)) 将多个数组沿指定轴连接。
22. np.vstack()
垂直堆叠数组。
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
vstacked_array = np.vstack((array1, array2))
print(vstacked_array)
# 输出:
# [[1 2 3]
# [4 5 6]]
解释:np.vstack((array1, array2)) 将数组沿垂直方向堆叠。
23. np.hstack()
水平堆叠数组。
array1 = np.array([[1], [2], [3]])
array2 = np.array([[4], [5], [6]])
hstacked_array = np.hstack((array1, array2))
print(hstacked_array)
# 输出:
# [[1 4]
# [2 5]
# [3 6]]
解释:np.hstack((array1, array2)) 将数组沿水平方向堆叠。
24. np.split()
将数组分割成多个子数组。
array = np.array([1, 2, 3, 4, 5, 6])
split_arrays = np.split(array, 3)
print(split_arrays)
# 输出: [array([1, 2]), array([3, 4]), array([5, 6])]
解释:np.split(array, indices) 将数组分割为多个子数组。
25. np.random.rand()
生成均匀分布的随机数。
random_array = np.random.rand(2, 3)
print(random_array)
解释:np.random.rand(d0, d1, ..., dn) 返回一个指定形状的数组,元素为均匀分布的随机数。
26. np.random.randn()
生成标准正态分布的随机数。
random_array = np.random.randn(2, 3)
print(random_array)
解释:np.random.randn(d0, d1, ..., dn) 返回一个指定形状的数组,元素为标准正态分布的随机数。
27. np.random.randint()
生成随机整数。
random_integers = np.random.randint(0, 10, size=(2, 3))
print(random_integers)
解释:np.random.randint(low, high, size) 返回指定形状的数组,元素为在 [low, high) 范围内的随机整数。
28. np.where()
根据条件返回数组元素的索引。
array = np.array([1, 2, 3, 4, 5])
indices = np.where(array > 2)
print(indices)
# 输出: (array([2, 3, 4]),)
解释:np.where(condition) 返回满足条件的元素的索引。
29. np.isin()
检查数组元素是否在另一个数组中。
array = np.array([1, 2, 3, 4])
check_array = np.array([2, 4])
result = np.isin(array, check_array) print(result)
# 输出: [False True False True]
解释:np.isin(element, test_elements) 检查 element 中的每个元素是否在 test_elements 中。
30. np.clip()
限制数组元素的值在指定范围内。
array = np.array([1, 2, 3, 4, 5])
clipped_array = np.clip(array, 2, 4)
print(clipped_array)
# 输出: [2 2 3 4 4]
解释:np.clip(array, min, max) 将数组元素限制在 [min, max] 范围内。
31. np.sort()
对数组进行排序。
array = np.array([3, 1, 2, 4])
sorted_array = np.sort(array)
print(sorted_array)
# 输出: [1 2 3 4]
解释:np.sort(array) 返回排序后的数组。
32. np.argsort()
返回数组排序后元素的索引。
array = np.array([3, 1, 2, 4])
sorted_indices = np.argsort(array)
print(sorted_indices)
# 输出: [1 2 0 3]
解释:np.argsort(array) 返回排序后元素的索引。
33. np.cumsum()
计算数组元素的累积和。
array = np.array([1, 2, 3, 4])
cumulative_sum = np.cumsum(array)
print(cumulative_sum)
# 输出: [ 1 3 6 10]
解释:np.cumsum(array) 返回数组元素的累积和。
34. np.cumprod()
计算数组元素的累积积。
array = np.array([1, 2, 3, 4])
cumulative_product = np.cumprod(array)
print(cumulative_product)
# 输出: [ 1 2 6 24]
解释:np.cumprod(array) 返回数组元素的累积积。
35. np.dot()
计算两个数组的点积。
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
dot_product = np.dot(array1, array2)
print(dot_product)
# 输出: 32
解释:np.dot(a, b) 计算数组 a 和 b 的点积。
36. np.matmul()
矩阵乘法。
array1 = np.array([[1, 2], [3, 4]])
array2 = np.array([[5, 6], [7, 8]])
matrix_product = np.matmul(array1, array2)
print(matrix_product)
# 输出:
# [[19 22]
# [43 50]]
解释:np.matmul(a, b) 执行矩阵乘法。
37. np.outer()
计算两个向量的外积。
array1 = np.array([1, 2])
array2 = np.array([3, 4])
outer_product = np.outer(array1, array2)
print(outer_product)
# 输出:
# [[3 4]
# [6 8]]
解释:np.outer(a, b) 返回向量 a 和 b 的外积。
38. np.inner()
计算两个向量的内积。
array1 = np.array([1, 2])
array2 = np.array([3, 4])
inner_product = np.inner(array1, array2)
print(inner_product)
# 输出: 11
解释:np.inner(a, b) 返回向量 a 和 b 的内积。
39. np.cross()
计算两个向量的叉积。
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
cross_product = np.cross(array1, array2)
print(cross_product)
# 输出: [-3 6 -3]
解释:np.cross(a, b) 返回向量 a 和 b 的叉积。
40. np.linalg.inv()
计算矩阵的逆。
matrix = np.array([[1, 2], [3, 4]])
inverse_matrix = np.linalg.inv(matrix)
print(inverse_matrix)
# 输出:
# [[-2. 1. ]
# [ 1.5 -0.5]]
解释:np.linalg.inv(matrix) 返回矩阵的逆。
41. np.linalg.det()
计算矩阵的行列式。
matrix = np.array([[1, 2], [3, 4]])
determinant = np.linalg.det(matrix)
print(determinant)
# 输出: -2.0
解释:np.linalg.det(matrix) 返回矩阵的行列式。
42. np.linalg.eig()
计算矩阵的特征值和特征向量。
matrix = np.array([[1, 2], [3, 4]])
eigenvalues, eigenvectors = np.linalg.eig(matrix)
print(eigenvalues)
# 输出: [-0.37228132 5.37228132]
解释:np.linalg.eig(matrix) 返回矩阵的特征值和特征向量。
43. np.save()
保存数组到文件。
array = np.array([1, 2, 3, 4])
np.save('my_array.npy', array)
解释:np.save(file, array) 将数组保存到指定文件。
44. np.load()
从文件加载数组。
loaded_array = np.load('my_array.npy')
print(loaded_array)
# 输出: [1 2 3 4]
解释:np.load(file) 从指定文件加载数组。
45. np.random.seed()
设置随机数生成的种子。
np.random.seed(42)
random_numbers = np.random.rand(3)
print(random_numbers)
# 输出:
#[0.37454012 0.95071431 0.73199394]
解释:np.random.seed(seed) 设置随机数生成的种子,以确保结果可重现。
46. np.meshgrid()
生成网格坐标矩阵。
x = np.array([1, 2, 3])
y = np.array([4, 5])
X, Y = np.meshgrid(x, y)
print(X)
# 输出:
# [[1 2 3]
# [1 2 3]]
print(Y)
# 输出:
# [[4 4 4]
# [5 5 5]]
解释:np.meshgrid(x, y) 根据输入的 x 和 y 生成网格坐标矩阵。
47. np.pad()
对数组进行填充。
array = np.array([[1, 2], [3, 4]])
padded_array = np.pad(array, pad_width=1, mode='constant', constant_values=0)
print(padded_array)
# 输出:
# [[0 0 0 0]
# [0 1 2 0]
# [0 3 4 0]
# [0 0 0 0]]
解释:np.pad(array, pad_width, mode) 在数组周围添加填充。
48. np.diff()
计算数组的离散差。
array = np.array([1, 2, 4, 7, 0])
difference = np.diff(array)
print(difference)
# 输出:
[ 1 2 3 -7]
解释:np.diff(array) 计算相邻元素之间的差值。
49. np.nonzero()
返回数组中非零元素的索引。
array = np.array([1, 0, 2, 0, 3])
nonzero_indices = np.nonzero(array)
print(nonzero_indices)
# 输出:
(array([0, 2, 4]),)
解释:np.nonzero(array) 返回数组中非零元素的索引。
50. np.broadcast_to()
将数组广播到指定形状。
array = np.array([1, 2, 3])
broadcasted_array = np.broadcast_to(array, (3, 3))
print(broadcasted_array)
# 输出:
# [[1 2 3]
# [1 2 3]
# [1 2 3]]
解释:np.broadcast_to(array, shape) 将数组广播到指定形状。
三、结语
本文给大家讲解了50个NumPy的常用方法,希望可以帮助到大家
下一篇应该会给大家介绍Pandas或者教大家按照配置Jupyter?
大家拜拜!