「数据分析 - NumPy 函数与方法全集」【数据分析全栈攻略:爬虫+处理+可视化+报告】

news2025/6/9 11:13:33

- 第 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')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2405286.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爬虫学习记录day1

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

agent基础概念

agent是什么 我个人认为agent并没有一个所谓完美的定义,它是一个比较活的概念,就像是你眼中的一个机器人你希望它做什么事,和我眼中的机器人它解决事情的流程,其实是可以完全不同的,没有必要非得搞一个统一的概念或流程来概况它。但我们依然可以概况几个通用的词来描述它…

让音乐“看得见”:使用 HTML + JavaScript 实现酷炫的音频可视化播放器

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

CAD实体对象智能识别

CAD实体对象智能识别 概述 实体对象智能识别能够在CAD图纸中智能识别和匹配相似的实体对象。该系统采用模式匹配算法,支持几何变换(缩放、旋转),并提供了丰富的配置选项和可视化界面。 系统提供两种主要的识别方式:…

LabVIEW音频测试分析

LabVIEW通过读取指定WAV 文件,实现对音频信号的播放、多维度测量分析功能,为音频设备研发、声学研究及质量检测提供专业工具支持。 主要功能 文件读取与播放:支持持续读取示例数据文件夹内的 WAV 文件,可实时播放音频以监听被测信…

RoseMirrorHA 双机热备全解析

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

day 18进行聚类,进而推断出每个簇的实际含义

浙大疏锦行 对聚类的结果根据具体的特征进行解释,进而推断出每个簇的实际含义 两种思路: 你最开始聚类的时候,就选择了你想最后用来确定簇含义的特征, 最开始用全部特征来聚类,把其余特征作为 x,聚类得到…

LLMs 系列科普文(6)

截止到目前,我们从模型预训练阶段的数据准备讲起,谈到了 Tokenizer、模型的结构、模型的训练,基础模型、预训练阶段、后训练阶段等,这里存在大量的术语或名词,也有一些奇奇怪怪或者说是看起来乱七八糟的内容。这期间跳…

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 评估的缩写&#xff…

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上使用,接下来就开…

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…

如何做好一份优秀的技术文档:专业指南与最佳实践

如何做好一份优秀的技术文档:专业指南与最佳实践 技术文档是产品开发、用户支持和团队协作的核心工具。高质量的技术文档能够提升开发效率、降低维护成本并改善用户体验。本文将从实践出发,详细讲解如何编写专业、清晰且实用的技术文档。 🌟…

TCP相关问题 第一篇

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

6.Pandas 数据可视化图-1

第三章 数据可视化 文章目录 目录 第三章 数据可视化 文章目录 前言 一、数据可视化 二、使用步骤 1.pyplot 1.1引入库 1.2 设置汉字字体 1.3 数据准备 1.4 设置索引列 ​编辑 1.5 调用绘图函数 2.使用seaborn绘图 2.1 安装导入seaborn 2.2 设置背景风格 2.3 调用绘图方法 2.…

软件功能测试报告都包含哪些内容?

软件功能测试报告是软件开发生命周期中的重要文档,主要涵盖以下关键内容:    1.测试概况:概述测试目标、范围和方法,确保读者对测试背景有清晰了解。 2.测试环境:详细描述测试所用的硬件、软件环境,确保…