NumPy函数大览:从基础到高级,掌握Python科学计算的利器

举报
柠檬味拥抱 发表于 2024/02/18 23:54:28 2024/02/18
【摘要】 在数据科学和机器学习领域,NumPy(Numerical Python)模块是Python中最常用的科学计算库之一。它提供了丰富的功能,包括数组操作、数学函数、统计方法等,为数据处理和分析提供了强大的工具。本文将重点介绍NumPy模块中常用的函数,涵盖字符串处理、数学运算、算术操作、统计计算、排序以及搜索等多个方面。 1. 字符串处理函数 1.1 numpy.char.add()该函数用于执...

在数据科学和机器学习领域,NumPy(Numerical Python)模块是Python中最常用的科学计算库之一。它提供了丰富的功能,包括数组操作、数学函数、统计方法等,为数据处理和分析提供了强大的工具。本文将重点介绍NumPy模块中常用的函数,涵盖字符串处理、数学运算、算术操作、统计计算、排序以及搜索等多个方面。

image-20240218234756189

1. 字符串处理函数

1.1 numpy.char.add()

该函数用于执行逐元素的字符串连接操作。例如:

import numpy as np

arr1 = np.array(['Hello', 'World'])
arr2 = np.array([' ', 'NumPy'])
result = np.char.add(arr1, arr2)

print(result)
# 输出:['Hello ' 'WorldNumPy']

image-20240218235042598

1.2 numpy.char.upper()numpy.char.lower()

分别用于将字符串数组转换为大写和小写形式。

arr = np.array(['hello', 'world'])
upper_case = np.char.upper(arr)
lower_case = np.char.lower(arr)

print(upper_case)
# 输出:['HELLO' 'WORLD']

print(lower_case)
# 输出:['hello' 'world']

2. 数学运算函数

2.1 numpy.sin()numpy.cos()

用于计算输入数组中元素的正弦和余弦值。

arr = np.array([0, np.pi/2, np.pi])
sin_values = np.sin(arr)
cos_values = np.cos(arr)

print(sin_values)
# 输出:[0. 1. 0.]

print(cos_values)
# 输出:[1. 0. -1.]

2.2 numpy.exp()numpy.log()

分别用于计算输入数组中元素的指数和自然对数。

arr = np.array([1, 2, 3])
exp_values = np.exp(arr)
log_values = np.log(arr)

print(exp_values)
# 输出:[2.71828183 7.3890561  20.08553692]

print(log_values)
# 输出:[0.  0.69314718 1.09861229]

3. 算术操作函数

3.1 numpy.add()numpy.subtract()

执行逐元素的加法和减法操作。

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

print(add_result)
# 输出:[5 7 9]

print(subtract_result)
# 输出:[3 3 3]

3.2 numpy.multiply()numpy.divide()

分别执行逐元素的乘法和除法操作。

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

print(multiply_result)
# 输出:[4 10 18]

print(divide_result)
# 输出:[4. 2.5 2.]

4. 统计计算函数

4.1 numpy.mean()numpy.median()

分别计算数组元素的平均值和中位数。

arr = np.array([1, 2, 3, 4, 5])
mean_value = np.mean(arr)
median_value = np.median(arr)

print(mean_value)
# 输出:3.0

print(median_value)
# 输出:3.0

image-20240218235110141

4.2 numpy.std()numpy.var()

分别计算数组元素的标准差和方差。

arr = np.array([1, 2, 3, 4, 5])
std_value = np.std(arr)
var_value = np.var(arr)

print(std_value)
# 输出:1.4142135623730951

print(var_value)
# 输出:2.0

5. 排序函数

5.1 numpy.sort()

用于对输入数组进行排序。

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

print(sorted_arr)
# 输出:[1 1 2 3 3 4 5 5 6 9]

6. 搜索函数

6.1 numpy.where()

根据指定条件返回数组中满足条件的元素的索引。

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

print(indices)
# 输出:(array([3, 4]),)

以上只是NumPy模块中常用函数的一小部分示例。NumPy提供了众多功能强大的函数,深入理解这些函数将帮助你更高效地进行科学计算和数据处理。通过不断实践和探索,你将更熟练地运用NumPy来处理各种数据分析和科学计算任务。

7. 多维数组操作函数

7.1 numpy.reshape()

用于改变数组的形状,使其符合指定的维度。

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

print(reshaped_arr)
# 输出:
# [[1 2 3]
#  [4 5 6]]

7.2 numpy.transpose()

用于交换数组的维度。

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

print(transposed_arr)
# 输出:
# [[1 4]
#  [2 5]
#  [3 6]]

8. 随机数生成函数

8.1 numpy.random.rand()

生成指定形状的随机数数组,取值范围在 [0, 1)

random_arr = np.random.rand(2, 3)

print(random_arr)
# 输出:
# [[0.12345678 0.45678901 0.78901234]
#  [0.23456789 0.56789012 0.89012345]]

8.2 numpy.random.randint()

生成指定范围内的随机整数数组。

random_int_arr = np.random.randint(1, 10, size=(3, 3))

print(random_int_arr)
# 输出:
# [[8 5 1]
#  [4 7 2]
#  [9 3 6]]

9. 线性代数函数

9.1 numpy.dot()

计算两个数组的点积。

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

print(dot_product)
# 输出:
# [[19 22]
#  [43 50]]

9.2 numpy.linalg.inv()

计算矩阵的逆。

arr = np.array([[1, 2], [3, 4]])
inv_matrix = np.linalg.inv(arr)

print(inv_matrix)
# 输出:
# [[-2.   1. ]
#  [ 1.5 -0.5]]

通过深入了解和应用NumPy模块中的这些常用函数,你将能够更灵活、高效地处理各种科学计算和数据分析任务。这篇博客涵盖了字符串处理、数学运算、算术操作、统计计算、排序、搜索、多维数组操作、随机数生成和线性代数等多个方面的函数,为你提供了全面的参考。在实践中不断使用这些函数,并结合具体场景,将会更好地理解和掌握NumPy的强大功能。

10. 矩阵操作函数

10.1 numpy.matmul()

用于执行矩阵乘法,与 numpy.dot() 类似。

matrix1 = np.array([[1, 2], [3, 4]])
matrix2 = np.array([[5, 6], [7, 8]])
matmul_result = np.matmul(matrix1, matrix2)

print(matmul_result)
# 输出:
# [[19 22]
#  [43 50]]

10.2 numpy.trace()

计算矩阵的迹,即主对角线上元素的和。

matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
trace_value = np.trace(matrix)

print(trace_value)
# 输出:15

11. 拼接和分割函数

11.1 numpy.concatenate()

用于沿指定轴拼接数组。

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

print(concatenated_arr)
# 输出:
# [[1 2]
#  [3 4]
#  [5 6]]

11.2 numpy.split()

将数组沿指定轴分割成多个子数组。

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

print(split_arr)
# 输出:[array([1, 2]), array([3, 4]), array([5, 6])]

12. 数组元素的重复和堆叠函数

12.1 numpy.repeat()

用于沿指定轴重复数组中的元素。

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

print(repeated_arr)
# 输出:[1 1 1 2 2 2 3 3 3]

12.2 numpy.tile()

用于沿指定轴堆叠数组的副本。

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

print(tiled_arr)
# 输出:[1 2 3 1 2 3 1 2 3]

这些矩阵操作、拼接、分割、重复和堆叠等函数为NumPy提供了更多处理多维数组的灵活性。在实际应用中,这些函数能够满足各种数据处理的需求,特别是在深度学习和神经网络等领域。通过熟练掌握这些函数,你将更好地处理和操作复杂的数据结构。

13. 广播(Broadcasting)

NumPy的广播机制允许对形状不同但满足一定条件的数组进行操作,而无需显式循环。这样可以更方便地处理不同维度的数据。

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

result = arr1 * scalar

print(result)
# 输出:
# [[10 20 30]
#  [40 50 60]]

在这个例子中,标量 scalar 被广播到了数组 arr1 的每个元素上,实现了逐元素的乘法运算。广播机制使得处理不同维度的数据变得更加简洁和高效。

14. 通用函数(ufunc)

NumPy提供了通用函数,用于对数组进行逐元素的操作,这些函数支持广播机制。

arr = np.array([1, 2, 3, 4, 5])
squared_arr = np.square(arr)
sqrt_arr = np.sqrt(arr)

print(squared_arr)
# 输出:[ 1  4  9 16 25]

print(sqrt_arr)
# 输出:[1.         1.41421356 1.73205081 2.         2.23606798]

通用函数可以直接应用于整个数组,实现了对每个元素的相同操作,无需显式循环。

15. 自定义函数

除了NumPy提供的众多内置函数外,你还可以自定义函数并应用于数组。

def my_function(x):
    return x ** 2 + 2 * x + 1

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

print(result)
# 输出:[ 4  9 16 25 36]

通过自定义函数,你可以根据具体需求实现各种复杂的操作,从而更灵活地处理数据。

16. 高级索引和切片

NumPy提供了灵活的高级索引和切片功能,使得对数组进行更复杂的操作成为可能。

16.1 花式索引

使用整数数组或布尔数组作为索引进行高级的元素选择。

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

print(result)
# 输出:[1 3 5]

16.2 切片操作

对数组进行切片,可以截取数组的子集。

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

print(subset)
# 输出:[2 3 4]

16.3 布尔索引

使用布尔条件来选择数组中的元素。

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

print(result)
# 输出:[3 4 5]

17. 文件的输入输出

NumPy允许将数组保存到文件中,或从文件中加载数组。

17.1 保存数组到文件

arr = np.array([1, 2, 3, 4, 5])
np.save('saved_array.npy', arr)

17.2 从文件加载数组

loaded_arr = np.load('saved_array.npy')
print(loaded_arr)
# 输出:[1 2 3 4 5]

18. NumPy与Pandas的结合

NumPy和Pandas是Python中数据科学领域中两个最常用的库,它们能够很好地协同工作。

18.1 将NumPy数组转换为Pandas DataFrame

import pandas as pd

arr = np.array([[1, 2, 3], [4, 5, 6]])
df = pd.DataFrame(arr, columns=['A', 'B', 'C'])

print(df)
# 输出:
#    A  B  C
# 0  1  2  3
# 1  4  5  6

18.2 从Pandas DataFrame获取NumPy数组

arr_from_df = df.values

print(arr_from_df)
# 输出:
# [[1 2 3]
#  [4 5 6]]

总结:

NumPy模块是Python中最常用的科学计算库之一,本文深入介绍了NumPy的众多常用函数,涵盖了字符串处理、数学运算、算术操作、统计计算、排序、搜索、多维数组操作、随机数生成、线性代数等多个领域。通过实例和代码解析,读者可以全面了解NumPy的功能,并在数据科学和机器学习项目中灵活运用。

文章中包含了以下关键点:

  1. 字符串处理函数,如numpy.char.add()numpy.char.upper()
  2. 数学运算函数,如numpy.sin()numpy.exp()
  3. 算术操作函数,如numpy.add()numpy.multiply()
  4. 统计计算函数,如numpy.mean()numpy.std()
  5. 排序函数,如numpy.sort()
  6. 搜索函数,如numpy.where()
  7. 多维数组操作函数,如numpy.reshape()numpy.transpose()
  8. 随机数生成函数,如numpy.random.rand()numpy.random.randint()
  9. 线性代数函数,如numpy.dot()numpy.linalg.inv()
  10. 矩阵操作函数,如numpy.matmul()numpy.trace()
  11. 拼接和分割函数,如numpy.concatenate()numpy.split()
  12. 数组元素的重复和堆叠函数,如numpy.repeat()numpy.tile()
  13. 广播机制,简化不同维度数组的操作
  14. 通用函数(ufunc),支持广播机制的逐元素操作
  15. 高级索引和切片,包括花式索引、切片操作和布尔索引
  16. 文件的输入输出,通过np.save()np.load()保存和加载数组
  17. NumPy与Pandas的结合,实现数组与数据框之间的转换

通过深入学习这些功能,读者将能够更高效地处理各种科学计算和数据分析任务。NumPy为Python数据科学领域提供了强大的工具,同时与其他库的结合也使得整个数据处理流程更加灵活和全面。希望本文能够为读者提供丰富的知识,并帮助他们在实践中更好地利用NumPy的强大功能。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。