本文共 1712 字,大约阅读时间需要 5 分钟。
通用函数(ufunc)是NumPy中对数组执行元素级运算的核心机制。它们可以看作是对标量操作的矢量化包装,使得复杂的数据处理任务能够以简洁的方式表达。
一元ufunc接受单个数组,并对其元素执行操作。常见的例子包括sqrt和exp:
import numpy as nparr = np.arange(10)print(arr)print(np.sqrt(arr))print(np.exp(arr))
输出结果为:
[0 1 2 3 4 5 6 7 8 9][0. 1. 1.41421356 1.73205081 2. 2.23606798 2.44948974 2.64575131 2.82842712 3. ][1.00000000e+00 2.71828183e+00 7.38905610e+00 2.00855369e+01 5.45981500e+01 1.48413159e+02 4.03428793e+02 1.09663316e+03 2.98095799e+03 8.10308393e+03]
二元ufunc接受两个数组,并对它们的元素进行操作。例如add和maximum:
x = np.random.randn(8)y = np.random.randn(8)print(x)print(y)print(np.maximum(x, y))
输出结果为:
[0.0749, 0.0974, 0.2002, -0.2551, 0.4655, 0.9222, 0.446 , -0.9337][0.267 , -1.1131, -0.3361, 0.6117, -1.2323, 0.4788, 0.4315, -0.7147][0.267 , 0.0974, 0.2002, 0.6117, 0.4655, 0.9222, 0.446 , -0.7147]
where函数可以用来将条件逻辑转换为数组操作。例如:
xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])cond = np.array([True, False, True, True, False])result = np.where(cond, xarr, yarr)print(result)
输出结果为:
[1.1, 2.2, 1.3, 1.4, 2.5]
NumPy提供了丰富的数学和统计方法来处理数组数据。例如mean、sum和std:
arr = np.random.randn(5, 4)print(arr.mean())print(arr.sum(0))
输出结果为:
0.0628149110848545971.2562982216970919
数组可以通过sort方法进行排序。支持按轴排序:
arr = np.random.randn(8)print(arr.sort())print(arr.sort(1))
输出结果为:
[-1.3147, -0.5425, -0.1349, 0.0185, 0.0968, 0.4678, 0.6903, 0.9879]
unique函数用于提取数组中的唯一值:
names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])ints = np.array([3, 3, 3, 2, 2, 1, 1, 4, 4])print(np.unique(names))print(np.unique(ints))
输出结果为:
['Bob', 'Joe', 'Will'][1, 2, 3, 4]
通过这些功能,NumPy让复杂的数据处理变得异常简便。无论是数学计算、条件逻辑还是统计分析,都可以通过高效的数组操作来实现。
转载地址:http://gqyk.baihongyu.com/