Numpy——通用函数、向量化、基础的统计计算
基本的通用函数(ufunc)
通用函数 (Universal Functions, 简称 ufunc) 是 NumPy 的核心功能之一,它是对 ndarray 进行逐元素操作的函数,具有高性能的向量化运算能力
主要特点:
- 向量化操作:对数组中的每个元素执行相同的操作
- 广播机制:支持不同形状数组之间的运算
- 多种返回:可以返回多个数组
- 高性能:底层用 C 实现,运算效率高
通用函数类型
- 一元函数:简单的元素级转换,
abs(绝对值),fabs(浮点数的绝对值), sqrt(平方根), square(), exp(指数), log(对数), log10, log2, sign(计算各元素的符号,1,0,-1); ceil(向上取整),floor(向下取整),rint(四舍五入到最接近的整数,保留dtype),modf(将数组的小数部分和整数部分以两个独立数组的形式返回)。三角函数相关:cos,cosh,sin,sinh,tan,tanh,arccos,arccosh,arcsin,arcsinh,arctan,arctanh - 二元函数 :接受两个数组,返回一个数组作为结果
add(加法),subtract(减法), multiply(乘法),divide(除法), floor_divide(),power(幂运算), maximum(最大值), minimum(最小值), mod(模运算), copysign(第二个数组中的元素值的符号复制给第一个数组中的元素)。
比较相关:greater, greater_equal, less, less_equal, equal, not equal, 返回布尔数组
位运算相关:logical_and, logical_or, logical_xor
out参数:out 是 NumPy 通用函数 (ufunc) 的一个重要参数,它允许你指定计算结果存储的位置,而不是创建一个新的数组
减少内存分配:避免创建临时数组,比如在循环中
提高性能:特别是对于大型数组的重复操作,(in-place写入)
原地操作:可以直接修改现有数组
import time
import numpy as np
large_arr = np.random.rand(10000000)# 不使用 out
start = time.time()
for _ in range(10):result = np.sin(large_arr)
print("Without out:", time.time() - start) # 输出:Without out: 1.055288314819336# 使用 out
output = np.empty_like(large_arr)
start = time.time()
for _ in range(10):np.sin(large_arr, out=output)