「数据分析 - NumPy 函数与方法全集」【数据分析全栈攻略:爬虫+处理+可视化+报告】
- 第 104 篇 -
Date: 2025 - 06 - 05
Author: 郑龙浩/仟墨
NumPy 函数与方法全集
文章目录
- NumPy 函数与方法全集
- 1. 数组创建与初始化
- 基础创建
- 序列生成
- 特殊数组
- 2. 数组操作
- 形状操作
- 合并与分割
- 3. 数学运算
- 基础运算
- 统计运算
- 4. 随机数生成
- 基础随机
- 分布函数
- 5. 文件IO
- 文件读写
1. 数组创建与初始化
基础创建
创建数组
-
np.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)
将Python序列转换为ndarray数组,默认创建副本
dtype
:指定数组数据类型copy
:是否创建副本(默认为True)ndmin
:指定最小维度数
np.array([1, 2, 3]) # 一维数组
np.array([[1, 2], [3, 4]]) # 二维数组
np.array([1, 2, 3], dtype=float) # 指定float类型
-
np.asarray(a, dtype=None, order=None)
将输入转换为数组,如果输入已经是数组且满足要求则不创建副本
- 比
np.array
更高效,适合确保输入为数组的场景
- 比
arr = np.array([1, 2, 3])
np.asarray(arr) is arr # True,不创建副本
np.asarray([1, 2, 3]) # 转换列表为数组
序列生成
生成数值序列
-
np.arange([start,] stop, [step,], dtype=None)
创建等差序列数组
start
:起始值(默认为0)stop
:结束值(不包含)step
:步长(默认为1)
np.arange(5) # [0, 1, 2, 3, 4]
np.arange(1, 10, 2) # [1, 3, 5, 7, 9]
np.arange(0, 1, 0.1) # [0.0, 0.1, ..., 0.9]
np.arange(, 10, 2) # [0, 2, 4, 6, 8]
-
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
创建等间隔数列
num
:生成样本数endpoint
:是否包含结束值retstep
:是否返回步长
np.linspace(0, 1, 5) # [0.0, 0.25, 0.5, 0.75, 1.0]
np.linspace(0, 1, 5, endpoint=False) # [0.0, 0.2, 0.4, 0.6, 0.8]
特殊数组
创建特殊值数组
-
np.zeros(shape, dtype=float, order='C')
创建全0数组
shape
:数组形状(整数或元组)type=float
:默认为float
,可以设置其他类型,如int
order='C'
表示数组按 行优先 存储,order='F'
列优先 –> 了解即可
np.zeros(3) # [0., 0., 0.]
np.zeros((2, 3)) # 2行3列全0数组
np.zeros((2, 3), dtype=int) # 整数型全0数组
-
np.ones(shape, dtype=None, order='C')
创建全1数组
- 当
dtype=None
时,NumPy 会使用浮点数类型float64
作为默认类型
- 当
np.ones(4) # [1., 1., 1., 1.]
np.ones((2, 2), dtype=bool) # [[True, True], [True, True]]
-
np.empty(shape, dtype=float, order='C')
创建未初始化数组
- 内容为内存中的随机值,比zeros更快
np.empty(3) # 内容不确定
np.empty((2, 2)) # 2x2未初始化数组
2. 数组操作
形状操作
改变数组形状
-
ndarray.reshape(shape, order='C')
返回新形状数组,不改变原数据
-
shape
:新形状,可以使用-1自动计算维度其中,如果列数为
-1
,则表示自动计算列数 -
order
:'C’按行,'F’按列
-
arr = np.arange(1, 7) #[1, 2, 3, 4, 5, 6]
arr.reshape(2, 3) # [[1, 2, 3], [4, 5, 6]]
arr.reshape(3, -1) # 自动计算列数
arr.reshape(3, -1, order='C') # order='C',可写可不写
-
ndarray.resize(new_shape, refcheck=True)
原地修改数组形状
- 与reshape不同,会直接修改原数组
- 新数组大于原数组时填充0,小于则截断
arr = np.array([1, 2, 3])
arr.resize(2, 2) # [[1, 2], [3, 0]]
合并与分割
数组组合操作
-
np.concatenate((a1, a2, ...), axis=0, out=None)
沿现有轴连接数组序列
axis
:连接的轴向(0为行,1为列) –> 0为第一个轴(垂直方向),1为第二个轴(水平方向)
a = np.array([[1, 2],[3, 4]])
b = np.array([[5, 6],[7, 8]])
print(f'a尺寸:{a.shape}, b尺寸:{b.shape}')
print(np.concatenate((a, b))) # [1, 2, 3, 4]
arr1 = np.concatenate((a, b), axis=0) # 按列拼接
print(f'按行拼接:\n{arr1}\n数组尺寸:{arr1.shape}\n')
arr2 = np.concatenate((a, b), axis=1) # 按行拼接
print(f'按列拼接:\n{arr2}\n数组尺寸:{arr2.shape}')#打印结果a尺寸:(2, 2), b尺寸:(2, 2)
[[1 2][3 4][5 6][7 8]]
按行拼接:
[[1 2][3 4][5 6][7 8]]
数组尺寸:(4, 2)按列拼接:
[[1 2 5 6][3 4 7 8]]
数组尺寸:(2, 4)
a尺寸:(2, 2), b尺寸:(2, 2)
[[1 2][3 4][5 6][7 8]]
按行拼接:
[[1 2][3 4][5 6][7 8]]
数组尺寸:(4, 2)按列拼接:
[[1 2 5 6][3 4 7 8]]
数组尺寸:(2, 4)
-
np.vstack(tup)
/np.hstack(tup)
垂直/水平堆叠数组
np.vstack((a, b)) # [[1, 2], [3, 4]]
np.hstack((a, b)) # [1, 2, 3, 4]
3. 数学运算
基础运算
基本数学运算
-
np.add(x1, x2, /, out=None, *, where=True)
数组元素相加
np.add([1, 2], [3, 4]) # [4, 6]
-
np.multiply(x1, x2, /, out=None, *, where=True)
数组元素相乘
np.multiply([1, 2], [3, 4]) # [3, 8]
统计运算
统计计算方法
-
np.sum(a, axis=None, dtype=None, out=None, keepdims=False)
计算数组元素和
axis
:沿指定轴计算(None表示全部元素)
arr = np.array([[1, 2], [3, 4]])
print(np.sum(arr)) # 10
print(np.sum(arr, axis=None)) # 10
print(np.sum(arr, axis=0)) # [4, 6] (列间求和)
print(np.sum(arr, axis=1)) # [4, 6] (行间求和)
-
np.mean(a, axis=None, dtype=None, out=None, keepdims=False)
计算平均值
np.mean([1, 2, 3]) # 2.0
np.mean(arr, axis=1) # [1.5, 3.5] (行间平均)
4. 随机数生成
基础随机
随机数生成
-
np.random.rand(d0, d1, ..., dn)
生成[0,1)均匀分布随机数
np.random.rand() # 单个随机数
np.random.rand(2, 3) # 2x3随机数组
-
np.random.randint(low, high=None, size=None, dtype='l')
生成随机整数
size
:输出形状
np.random.randint(5) # 0-4随机整数
np.random.randint(1, 10, size=(2, 2)) # 2x2的1-9随机数组
分布函数
概率分布随机数
-
np.random.normal(loc=0.0, scale=1.0, size=None)
正态分布随机数
loc
:均值scale
:标准差
np.random.normal(0, 1, 3) # 3个标准正态随机数
-
np.random.uniform(low=0.0, high=1.0, size=None)
均匀分布随机数
np.random.uniform(1, 5, 3) # 3个1-5均匀分布数
5. 文件IO
文件读写
数组文件操作
-
np.save(file, arr, allow_pickle=True, fix_imports=True)
保存数组为.npy文件
arr = np.array([1, 2, 3])
np.save('data.npy', arr)
-
np.load(file, mmap_mode=None, allow_pickle=False, fix_imports=True, encoding='ASCII')
加载.npy文件
loaded_arr = np.load('data.npy')
相关文章:
「数据分析 - NumPy 函数与方法全集」【数据分析全栈攻略:爬虫+处理+可视化+报告】
- 第 104 篇 - Date: 2025 - 06 - 05 Author: 郑龙浩/仟墨 NumPy 函数与方法全集 文章目录 NumPy 函数与方法全集1. 数组创建与初始化基础创建序列生成特殊数组 2. 数组操作形状操作合并与分割 3. 数学运算基础运算统计运算 4. 随机数生成基础随机分布函数 5. 文件IO文件读写 …...

爬虫学习记录day1
什么是逆向? 数据加密 参数加密 表单加密扣js改写Python举例子 4.1 元素:被渲染的数据资源 动态数据 静态数据 如果数据是加密的情况则无法直接得到数据 4.2 控制台:输出界面 4.3 源代码页面 4.4 网络:抓包功能,获取浏…...

agent基础概念
agent是什么 我个人认为agent并没有一个所谓完美的定义,它是一个比较活的概念,就像是你眼中的一个机器人你希望它做什么事,和我眼中的机器人它解决事情的流程,其实是可以完全不同的,没有必要非得搞一个统一的概念或流程来概况它。但我们依然可以概况几个通用的词来描述它…...
MS8312A 车规 精密、低噪、CMOS、轨到轨输入输出运算放大器,用于传感器、条形扫描器
MS8312A 车规 精密、低噪、CMOS、轨到轨输入输出运算放大器,用于传感器、条形扫描器 简述 MS8312A 是双通道的轨到轨输入输出单电源供电运放。它们具有低的失调电压、低的输入电压电流噪声和宽的信号带宽。 低失调、低噪、低输入偏置电流和宽带宽的特性结合使得 …...
计算机二级Python考试的核心知识点总结
以下是计算机二级Python考试的核心知识点总结,结合高频考点和易错点分类整理: 1. **数据类型与运算** ▷ 不可变类型:int, float, str, tuple(重点区分list与tuple) ▷ 运算符优先级:** > * /…...

让音乐“看得见”:使用 HTML + JavaScript 实现酷炫的音频可视化播放器
在这个数字时代,音乐不仅是听觉的享受,更可以成为视觉的盛宴!本文用 HTML + JavaScript 实现了一个音频可视化播放器,它不仅能播放本地音乐、控制进度和音量,还能通过 Canvas 绘制炫酷的音频频谱图,让你“听见色彩,看见旋律”。 效果演示 核心功能 本项目主要包含以下…...

CAD实体对象智能识别
CAD实体对象智能识别 概述 实体对象智能识别能够在CAD图纸中智能识别和匹配相似的实体对象。该系统采用模式匹配算法,支持几何变换(缩放、旋转),并提供了丰富的配置选项和可视化界面。 系统提供两种主要的识别方式:…...
MySQL中的部分问题(2)
索引失效 运算或函数影响列的使用 当查询条件中对索引列用了函数或运算,索引会失效。 例:假设有索引:index idx_name (name) select * from users where upper(name) ALICE; -- 索引失效因为upper(name)会对列内容进行函数处理…...
【从前端到后端导入excel文件实现批量导入-笔记模仿芋道源码的《系统管理-用户管理-导入-批量导入》】
批量导入预约数据-笔记 前端场馆列表后端 前端 场馆列表 该列表进入出现的是这样的,这儿是列表操作 <el-table-column label"操作" align"center" width"220px"><template #default"scope"><el-buttonlinktype"…...

LabVIEW音频测试分析
LabVIEW通过读取指定WAV 文件,实现对音频信号的播放、多维度测量分析功能,为音频设备研发、声学研究及质量检测提供专业工具支持。 主要功能 文件读取与播放:支持持续读取示例数据文件夹内的 WAV 文件,可实时播放音频以监听被测信…...
MySQL 8.0 绿色版安装和配置过程
MySQL作为云计算时代,被广泛使用的一款数据库,他的安装方式有很多种,有yum安装、rpm安装、二进制文件安装,当然也有本文提到的绿色版安装,因绿色版与系统无关,且可快速复制生成,具有较强的优势。…...

RoseMirrorHA 双机热备全解析
在数字化时代,企业核心业务系统一旦瘫痪,每分钟可能造成数万甚至数十万的损失。想象一下,如果银行的交易系统突然中断,或者医院的挂号系统无法访问,会引发怎样的连锁反应?为了守护这些关键业务,…...

day 18进行聚类,进而推断出每个簇的实际含义
浙大疏锦行 对聚类的结果根据具体的特征进行解释,进而推断出每个簇的实际含义 两种思路: 你最开始聚类的时候,就选择了你想最后用来确定簇含义的特征, 最开始用全部特征来聚类,把其余特征作为 x,聚类得到…...
pandas 字符串存储技术演进:从 object 到 PyArrow 的十年历程
文章目录 1. 引言2. 阶段1:原始时代(pandas 1.0前)3. 阶段2:Python-backed StringDtype(pandas 1.0 - 1.3)4. 阶段3:PyArrow初次尝试(pandas 1.3 - 2.1)5. 阶段4…...

LLMs 系列科普文(6)
截止到目前,我们从模型预训练阶段的数据准备讲起,谈到了 Tokenizer、模型的结构、模型的训练,基础模型、预训练阶段、后训练阶段等,这里存在大量的术语或名词,也有一些奇奇怪怪或者说是看起来乱七八糟的内容。这期间跳…...
exp1_code
#include <iostream> using namespace std; // 链栈节点结构 struct StackNode { int data; StackNode* next; StackNode(int val) : data(val), next(nullptr) {} }; // 顺序栈实现 class SeqStack { private: int* data; int top; int capac…...

serv00 ssh登录保活脚本-邮件通知版
适用于自己有服务器情况,ssh定时登录到serv00,并在登录成功后发送邮件通知 msmtp 和 mutt安装 需要安装msmtp 和 mutt这两个邮件客户端并配置,参考如下文章前几步是讲配置这俩客户端的,很简单,不再赘述 用Shell脚本实…...

意识上传伦理前夜:我们是否在创造数字奴隶?
当韩国财阀将“数字永生”标价1亿美元准入权时,联合国预警的“神经种姓制度”正从科幻步入现实。某脑机接口公司用户协议中“上传意识衍生算法归公司所有”的隐藏条款,恰似德里达预言的当代印证:“当意识沦为可交易数据流,主体性便…...

【AIGC】RAGAS评估原理及实践
【AIGC】RAGAS评估原理及实践 (1)准备评估数据集(2)开始评估2.1 加载数据集2.2 评估忠实性2.3 评估答案相关性2.4 上下文精度2.5 上下文召回率2.6 计算上下文实体召回率 RAGas(RAG Assessment)RAG 评估的缩写ÿ…...

ESP12E/F 参数对比
模式GPIO0GPIO2GPIO15描述正常启动高高低从闪存运行固件闪光模式低高低启用固件刷写 PinNameFunction1RSTReset (Active Low)2ADC (A0)Analog Input (0–1V)3EN (CH_PD)Chip Enable (Pull High for Normal Operation)4GPIO16Wake from Deep Sleep, General Purpose I/O5GPIO14S…...

第二十八章 字符串与数字
第二十八章 字符串与数字 计算机程序完全就是和数据打交道。很多编程问题需要使用字符串和数字这种更小的数据来解决。 参数扩展 第七章,已经接触过参数扩展,但未进行详细说明,大多数参数扩展并不用于命令行,而是出现在脚本文件中。 如果没有什么特殊原因,把参数扩展放…...

[RDK X5] MJPG编解码开发实战:从官方API到OpenWanderary库的C++/Python实现
业余时间一直在基于RDK X5搞一些小研究,需要基于高分辨率图像检测目标。实际落地时,在图像采集上遇到了个大坑。首先,考虑到可行性,我挑选了一个性价比最高的百元内摄像头,已确定可以在X5上使用,接下来就开…...
java复习 05
我的天啊一天又要过去了,没事的还有时间!!! 不要焦虑不要焦虑,事实证明只要我认真地投入进去一切都还是来得及的,代码多实操多复盘,别叽叽喳喳胡思乱想多多思考,有迷茫前害怕后的功…...

aardio 简单网页自动化
WebView自动化,以前每次重复做网页登录、搜索这些操作时都觉得好麻烦,现在终于能让程序替我干活了,赶紧记录下这个超实用的技能! 一、初次接触WebView WebView自动化就像给程序装了个"网页浏览器",第一步得…...

打卡第39天:Dataset 和 Dataloader类
知识点回顾: 1.Dataset类的__getitem__和__len__方法(本质是python的特殊方法) 2.Dataloader类 3.minist手写数据集的了解 作业:了解下cifar数据集,尝试获取其中一张图片 import torch import torch.nn as nn import…...
【评测】Qwen3-Embedding模型初体验
每一篇文章前后都增加返回目录 回到目录 【评测】Qwen3-Embedding模型初体验 模型的介绍页面 本机配置:八代i5-8265U,16G内存,无GPU核显运行,win10操作系统 ollama可以通过下面命令拉取模型: ollama pull modelscope…...
BeanFactory 和 FactoryBean 有何区别与联系?
导语: Spring 是后端面试中的“常青树”,而 BeanFactory 与 FactoryBean 的关系更是高频卡人点。很多候选人混淆两者概念,答非所问,轻则失分,重则直接被“pass”。本文将从面试官视角,深入剖析这一经典问题…...

如何做好一份优秀的技术文档:专业指南与最佳实践
如何做好一份优秀的技术文档:专业指南与最佳实践 技术文档是产品开发、用户支持和团队协作的核心工具。高质量的技术文档能够提升开发效率、降低维护成本并改善用户体验。本文将从实践出发,详细讲解如何编写专业、清晰且实用的技术文档。 🌟…...
C语言内存管理和编译优化实战
参考: C语言内存管理“玄学”:从崩溃到精通的避坑指南C语言编译优化实战:从入门到进阶的高效代码优化技巧...

TCP相关问题 第一篇
TCP相关问题1 1.TCP主动断开连接方为什么需要等待2MSL 如上图所示:在被动链接方调用close,发送FIN时进入LAST_ACK状态,但未收到主动连接方的ack确认,需要被动连接方重新发送一个FIN,而为什么是2MSL,一般认为丢失ack在…...