当前位置: 首页 > news >正文

Python数据分析基础(二)

一、Numpy 常用函数分类概览

函数类别常用函数
基本数学函数np.sum(x)np.sqrt(x)np.exp(x)np.log(x)np.sin(x)np.abs(x)np.power(a, b)np.round(x, n) 等
统计函数np.mean(x)np.median(x)np.std(x)np.var(x)np.min(x)np.max(x)np.percentile(x, q) 等
比较函数np.greater(a, b)np.less(a, b)np.equal(a, b)np.logical_and(a, b)np.isnan(x) 等
数组操作函数np.concatenate((a, b))np.split(x, indices)np.reshape(x, shape)np.copy(x)np.unique(x)np.sort(x) 等
其他常用函数np.where(condition, x, y)np.in1d(a, b)np.argsort(x)np.lexsort(keys) 等

 二、详细函数示例及说明

1. 基本数学函数

(1)平方根计算 np.sqrt(x)
import numpy as np# 计算单个数值的平方根
print(np.sqrt(9))  # 输出:3.0# 计算数组的平方根
print(np.sqrt([1, 4, 9]))  # 输出:[1. 2. 3.]# 对ndarray数组进行操作
arr1 = np.array([1, 225, 81])
print(np.sqrt(arr1))  # 输出:[ 1. 15.  9.]
(2)指数计算 np.exp(x)
import numpy as np# 计算e的n次方(e≈2.718)
print(np.exp(1))  # 输出:2.718281828459045(e^1)
print(np.exp(2))  # 输出:7.38905609893065(e^2)
print(np.exp(0))  # 输出:1(e^0=1)
(3)自然对数计算 np.log(x)
import numpy as np# 计算自然对数(以e为底)
print(np.log(1))  # 输出:0.0(ln(1)=0)
print(np.log(np.e))  # 输出:1.0(ln(e)=1)
(4)三角函数 np.sin(x)np.cos(x)
import numpy as np# 计算正弦值(参数为弧度)
print(np.sin(1))  # 输出:0.8414709848078965(sin(1弧度))# 计算π的正弦和余弦
print(np.sin(np.pi))  # 输出:1.2246467991473532e-16(≈0,sin(π)=0)
print(np.cos(np.pi))  # 输出:-1.0(cos(π)=-1)
(5)绝对值 np.abs(x)
import numpy as nparr = np.array([1, -2, 3, 4, -5])
print(np.abs(arr))  # 输出:[1 2 3 4 5](所有元素取绝对值)
(6)幂运算 np.power(a, b)
import numpy as nparr = np.array([1, -2, 3, 4, -5])
print(np.power(arr, 2))  # 输出:[ 1  4  9 16 25](每个元素的平方)
(7)四舍五入 np.round(x, n)
import numpy as nparr = np.array([2.1, -0.6, 1.9])
print(np.round(arr))  # 输出:[ 2. -1.  2.](默认保留0位小数)
(8)取整函数 np.ceil(x)np.floor(x)
import numpy as nparr = np.array([1.2, 1.7, 0.9])
print(np.ceil(arr))  # 输出:[2. 2. 1.](向上取整)
print(np.floor(arr))  # 输出:[1. 1. 0.](向下取整)
(9)缺失值检测 np.isnan(x)
import numpy as np# 无缺失值的数组
arr = np.array([1, 2, 3])
print(np.isnan(arr))  # 输出:[False False False]# 含缺失值(np.nan)的数组
arr = np.array([1, np.nan, 3])
print(np.isnan(arr))  # 输出:[False  True False](True表示对应位置是缺失值)

2. 统计函数

(1)求和 np.sum(x)
import numpy as np# 随机生成3x3数组(元素为1-100的整数)
arr = np.random.randint(1, 100, (3, 3))
print(arr)  # 示例输出:[[75 77 70][58 52 10][10 28 20]]
print(np.sum(arr))  # 输出:400(数组所有元素的和)
(2)平均值 np.mean(x)
import numpy as nparr = np.random.randint(1, 10, (3, 3))
print(arr)  # 示例输出:[[1 1 2][9 3 8][5 3 4]]
print(np.mean(arr))  # 输出:4.0(所有元素的平均值)
(3)中位数 np.median(x)
import numpy as nparr = np.random.randint(1, 10, 5)
print(arr)  # 示例输出:[6 6 6 8 7](先随机生成5个元素)
print(np.median(arr))  # 输出:6.0(排序后中间位置的元素)
(4)方差与标准差
  • 方差 np.var(x):衡量数据离散程度(平均值与每个数据点差的平方的平均值)
  • 标准差 np.std(x):方差的平方根,与原数据单位一致
import numpy as nparr = np.array([1, 2, 3, 4, 5])
print(np.var(arr))  # 输出:2.0(方差)
print(np.std(arr))  # 输出:1.4142135623730951(标准差)
(5)最值与索引 np.max(x)np.min(x)np.argmax(x)np.argmin(x)
import numpy as nparr = np.array([1, 2, 3, 4, 5])
print(np.max(arr), np.argmax(arr))  # 输出:5 4(最大值为5,位于索引4的位置)
print(np.min(arr), np.argmin(arr))  # 输出:1 0(最小值为1,位于索引0的位置)
(6)分位数 np.percentile(x, q)

分位数是将一组数据按照从小到大的顺序排列后,处于某一特定百分比位置的数值。它可以理解为:

  • 把数据分成 100 等份,第q个分位数就是处于第q%位置的数值(q的取值范围是 0-100)
  • 例如:第 50 个分位数就是中位数,即数据中一半的值小于等于它,一半的值大于等于它
import numpy as np# 定义一个简单的1维数组
arr = np.array([1, 2, 3, 4, 5])# 计算第50个分位数(中位数)
print(np.percentile(arr, 50))  # 输出:3.0
# 解释:数组排序后,中间位置的元素是3,因此50%分位数为3# 计算第40个分位数
print(np.percentile(arr, 40))  # 输出:2.6
# 解释:
# 1. 数组排序后索引为0-4(共5个元素)
# 2. 第40%位置的索引 = 40% * (5-1) = 1.6(即位于索引1和2之间)
# 3. 索引1的值为2,索引2的值为3,线性插值计算:2 + 0.6*(3-2) = 2.6
import numpy as nparr = np.array([1, 2, 3, 4, 5])# 同时计算多个分位数(25%、50%、75%)
print(np.percentile(arr, [25, 50, 75]))  # 输出:[2.  3.  4. ]
# 解释:
# - 25%分位数:位于索引0.75处,插值后为2.0
# - 50%分位数:即中位数3.0
# - 75%分位数:位于索引2.25处,插值后为4.0

 

(7)累积和 np.cumsum(x)
import numpy as nparr = np.array([1, 2, 3, 4, 5])
print(np.cumsum(arr))  # 输出:[ 1  3  6 10 15](依次累加的结果:1, 1+2=3, 3+3=6, ...)

http://www.dtcms.com/a/301190.html

相关文章:

  • 两个函数的卷积
  • Kafka——消费者组消费进度监控都怎么实现?
  • 数字签名与数字证书
  • [leetcode] 图论算法(DFS和BFS)
  • Java“class file contains wrong class”解决
  • NX868NX872美光固态闪存NX873NX876
  • 疯狂星期四文案网第21天运营日记
  • 10.模块与包:站在巨人的肩膀上
  • 去除视频字幕 5: 使用 ProPainter, 记录探索过程
  • red靶机
  • MCU 通用AT指令处理框架
  • 洛谷 P2114 [NOI2014] 起床困难综合症-普及+/提高
  • AutoLabelImg:高效的数据自动化标注工具和下载
  • 风光氢系统仿真与容量扩展设计
  • 飞牛NAS本地化部署n8n打造个人AI工作流中心
  • 识别身份证用证件号或姓名改名,如何ocr识别身份证复印件并导出至excel表格?身份证读取软件导出到Excel乱码怎么解决?
  • LLM 多语言数据集
  • 华为OD机试_2025 B卷_书籍叠放(Python,200分)(附详细解题思路)
  • Coze Studio概览(一)
  • 力扣131:分割回文串
  • 详解赛灵思SRIO IP并提供一种FIFO封装SRIO的收发控制器仿真验证
  • 2025年Agent创业实战指南:从0到1打造高增长AI智能体项目
  • FPGA IP升级
  • input_handler和input_dev详解
  • 【AI阅读】20250717阅读输入
  • 深度学习在计算机视觉中的应用:对象检测
  • C++ auto 类型推导
  • Netty中 ? extends Future<? super V>这种的写法的理解
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 73(题目+回答)
  • PDF文件被加密限制怎么办?专业级解除方案分享