欢迎访问宙启技术站
智能推送

Python中11种NumPy高级操作总结

发布时间:2023-05-16 05:40:06

NumPy是Python中用于数据处理和科学计算的重要库之一。它提供了许多高级操作,方便我们快速高效地处理数据和运算。本文将总结Python中11种NumPy高级操作,包括索引、切片、合并、排序、去重、替换、连接、广播、数据类型转换、数学函数、线性代数函数。

1. 数组索引

数组索引是NumPy中最常用的操作之一。可以使用方括号和索引值来访问数组中的特定元素。例如,以下代码将创建一个3x3的数组,然后使用索引访问第1行第2列的元素。

import numpy as np
# 创建3x3数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 获取第1行第2列的元素
print(arr[0, 1])  # 输出2

2. 数组切片

与列表切片类似,NumPy数组也支持切片,可以轻松获取指定范围内的元素。以下代码将创建一个3x3的数组,然后使用切片操作获取第1行和第2行。

import numpy as np
# 创建3x3数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 获取第1行和第2行
print(arr[0:2, :])  # 输出[[1, 2, 3], [4, 5, 6]]

3. 数组合并

可以使用NumPy中的concatenate函数将两个或多个数组合并为一个数组。以下代码将创建两个1x3的数组,然后使用concatenate函数将它们合并成为一个2x3的数组。

import numpy as np
# 创建1x3数组
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
# 合并数组
arr3 = np.concatenate((arr1, arr2))
print(arr3)  # 输出[1, 2, 3, 4, 5, 6]

4. 数组排序

NumPy中的sort函数可以用来对数组进行排序。默认情况下是升序排列,可以通过设置参数ascending=False来进行降序排列。以下代码将创建一个5个随机数的数组,然后将其排序。

import numpy as np
# 创建5个随机数的数组
arr = np.random.randn(5)
# 排序数组
arr.sort()
print(arr)  # 输出排序后的数组

5. 数组去重

NumPy中的unique函数可以用来去除数组中的重复元素,返回一个去重后的数组。以下代码将创建一个有重复元素的数组,然后去重。

import numpy as np
# 创建一个有重复元素的数组
arr = np.array([1, 2, 1, 3, 4, 2, 5])
# 去重
arr2 = np.unique(arr)
print(arr2)  # 输出去重后的数组

6. 数组替换

NumPy中的where函数可以用于根据条件替换数组中的元素。以下代码将创建一个1x10的数组,然后使用where函数将小于0的元素替换为0。

import numpy as np
# 创建1x10数组
arr = np.random.randn(10)
# 替换小于0的元素为0
arr2 = np.where(arr < 0, 0, arr)
print(arr2)  # 输出替换后的数组

7. 数组连接

可以使用NumPy中的hstack、vstack、dstack函数将两个或多个数组按照水平方向、垂直方向、深度方向连接成一个新的数组。以下代码将创建两个3x3的数组,然后使用hstack函数将它们水平连接成一个6x3的数组。

import numpy as np
# 创建两个3x3数组
arr1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arr2 = np.array([[10, 11, 12], [13, 14, 15], [16, 17, 18]])
# 水平连接数组
arr3 = np.hstack((arr1, arr2))
print(arr3)  # 输出水平连接后的数组

8. 数组广播

数组广播是指在不进行显式复制的情况下进行计算的一种特殊机制,使得两个形状不同的数组可以进行计算。以下代码将创建一个2x2的数组和一个1x2的数组,然后使用广播机制将它们相加。

import numpy as np
# 创建2x2数组
arr1 = np.array([[1, 2], [3, 4]])
# 创建1x2数组
arr2 = np.array([5, 6])
# 广播相加
arr3 = arr1 + arr2
print(arr3)  # 输出相加后的数组

9. 数据类型转换

可以使用NumPy中的astype函数将数组的数据类型转换为另一种类型。以下代码将创建一个1x5的整数数组,然后使用astype函数将其转换为float类型。

import numpy as np
# 创建1x5整数数组
arr1 = np.array([1, 2, 3, 4, 5])
# 转换成float类型
arr2 = arr1.astype('float')
print(arr2)  # 输出类型转换后的数组

10. 数学函数

NumPy中提供了许多数学函数,例如sin、cos、exp、log、sqrt等等。以下代码将创建一个3x3的数组,然后使用sin函数计算它的正弦值。

import numpy as np
# 创建3x3数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 计算数组的正弦值
arr2 = np.sin(arr)
print(arr2)  # 输出正弦值数组

11. 线性代数函数

NumPy中也提供了许多线性代数函数,例如dot、det、inv、eig等等。以下代码将创建两个3x3的数组,然后使用dot函数计算它们的矩阵乘积。

import numpy as np
# 创建两个3x3数组
arr1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arr2 = np.array([[10, 11, 12], [13, 14, 15], [16, 17, 18]])
# 计算矩阵乘积
arr3 = np.dot(arr1, arr2)
print(arr3)  # 输出矩阵乘积数组

本文总结了Python中11种NumPy高级操作,包括数组索引、切片、合并、排序、去重、替换、连接、广播、数据类型转换、数学函数、线性代数函数。这些操作非常实用,掌握它们可以使我们更加高效地进行数据处理和科学计算。