矢量化指的是用数组表达式代替循环来操作数组里的每个元素。
NumPy提供的通用函数(既ufunc函数)是一种对ndarray中的数据进行元素级别运算的函数。
例如,square函数计算各元素的平方,rint函数将各元素四舍五入:
![利用Python进行数据分析(6) NumPy基础: 矢量计算 利用Python进行数据分析(6) NumPy基础: 矢量计算](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OdVlteHZaM011WTI5dEwyTnVZbXh2WjNOZlkyOXRMM05wY210bGRtbHVMemcyTnpBMU9DOXZYMk5vTURRdFl5MHdMbkJ1Wnc9PS5qcGc%3D.jpg?w=700&webp=1)
还有一些函数接受2个参数,叫二元ufunc,比如add函数和maximum函数:
![利用Python进行数据分析(6) NumPy基础: 矢量计算 利用Python进行数据分析(6) NumPy基础: 矢量计算](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OdVlteHZaM011WTI5dEwyTnVZbXh2WjNOZlkyOXRMM05wY210bGRtbHVMemcyTnpBMU9DOXZYMk5vTURRdFl5MHhMbkJ1Wnc9PS5qcGc%3D.jpg?w=700&webp=1)
numpy.where函数
numpy.where函数是三元表达式 x if condition else y 的矢量化版本,例如:
![利用Python进行数据分析(6) NumPy基础: 矢量计算 利用Python进行数据分析(6) NumPy基础: 矢量计算](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OdVlteHZaM011WTI5dEwyTnVZbXh2WjNOZlkyOXRMM05wY210bGRtbHVMemcyTnpBMU9DOXZYMk5vTURRdFl5MHlMbkJ1Wnc9PS5qcGc%3D.jpg?w=700&webp=1)
np.where函数的第二个参数和第三个参数不是必要的,它们都可以是标量值,例如:
![利用Python进行数据分析(6) NumPy基础: 矢量计算 利用Python进行数据分析(6) NumPy基础: 矢量计算](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OdVlteHZaM011WTI5dEwyTnVZbXh2WjNOZlkyOXRMM05wY210bGRtbHVMemcyTnpBMU9DOXZYMk5vTURRdFl5MHpMbkJ1Wnc9PS5qcGc%3D.jpg?w=700&webp=1)
数学和统计方法
例如np.sum函数可以对数组里的元素求和:
![利用Python进行数据分析(6) NumPy基础: 矢量计算 利用Python进行数据分析(6) NumPy基础: 矢量计算](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OdVlteHZaM011WTI5dEwyTnVZbXh2WjNOZlkyOXRMM05wY210bGRtbHVMemcyTnpBMU9DOXZYMk5vTURRdFl5MDBMbkJ1Wnc9PS5qcGc%3D.jpg?w=700&webp=1)
对于二维数组,sum函数也是将所有元素求和,但是二维数组是有横轴和竖轴两个方向的,所以sum函数对于二维数组还可以按照方向进行求和:
![利用Python进行数据分析(6) NumPy基础: 矢量计算 利用Python进行数据分析(6) NumPy基础: 矢量计算](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmFXMWhaMlZ6TG1OdVlteHZaM011WTI5dEwyTnVZbXh2WjNOZlkyOXRMM05wY210bGRtbHVMemcyTnpBMU9DOXZYMk5vTURRdFl5MDFMbkJ1Wnc9PS5qcGc%3D.jpg?w=700&webp=1)