Numpy广播机制实战指南(多维数组运算全攻略)

第一章:Numpy广播机制的核心概念

Numpy的广播(Broadcasting)机制是其最强大的特性之一,它允许在不同形状的数组之间执行算术运算。当参与运算的数组形状不完全相同时,Numpy会自动“广播”较小的数组,使其与较大数组在维度上兼容,从而避免了显式复制数据带来的性能开销。
广播的基本规则
  • 从右到左逐个比较两个数组的维度大小
  • 如果两者的当前维度相等,或其中一个是1,则该维度兼容
  • 如果所有维度都兼容,则可以进行广播;否则抛出ValueError

广播示例

以下代码展示了如何将一个一维数组与一个二维数组相加:
# 导入numpy库
import numpy as np

# 创建一个2x3的二维数组
a = np.array([[1, 2, 3],
              [4, 5, 6]])

# 创建一个长度为3的一维数组
b = np.array([10, 20, 30])

# 执行加法运算,b会被广播成2x3的形状
result = a + b

print(result)
# 输出:
# [[11 22 33]
#  [14 25 36]]
在此过程中,数组b并未实际复制行数据,而是通过视图机制在运算时动态扩展,提升了内存效率。

广播兼容性判断表

数组A形状数组B形状是否可广播
(3, 4)(3, 4)
(3, 4)(4,)
(3, 1)(3, 4)
(2, 3)(3, 2)
graph LR A[输入数组形状] --> B{维度兼容?} B -->|是| C[执行广播运算] B -->|否| D[抛出ValueError]

第二章:广播规则的理论基础与典型场景

2.1 广播的基本原则与维度匹配条件

在张量计算中,广播(Broadcasting)是一种允许不同形状数组进行算术运算的机制。其核心原则是:当两个数组的维度大小满足特定匹配条件时,较小的数组会被“拉伸”以匹配较大数组的形状。
广播的维度匹配规则
两个维度能够兼容,当且仅当:
  • 它们长度相等;
  • 其中一个是1;
  • 其中一个维度缺失(即一个数组比另一个少维度)。
例如,形状为 (3, 1) 和 (1,) 的数组可广播至 (3, 1),再与 (3, 3) 运算时进一步扩展。
代码示例:NumPy 中的广播行为
import numpy as np

a = np.array([[1], [2], [3]])  # 形状: (3, 1)
b = np.array([1, 2])           # 形状: (2,)
c = a + b                      # 广播至 (3, 2)
print(c)
上述代码中,a 的形状为 (3, 1),b 为 (2,),广播后二者扩展为 (3, 2),逐元素相加。这体现了 NumPy 自动对齐维度的能力,极大提升了计算灵活性。

2.2 标量与数组之间的广播运算解析

在NumPy中,广播(Broadcasting)机制允许形状不同的数组进行算术运算。当标量与数组参与运算时,标量会自动扩展到与数组相同形状,从而实现逐元素操作。
广播的基本规则
  • 若两数组维度不同,低维数组会在前面补1以匹配高维
  • 对应维度大小必须相等,或其中一个为1
  • 满足条件后,标量被视为全1形状的虚拟数组进行扩展
代码示例与分析
import numpy as np
arr = np.array([1, 2, 3])
result = arr + 5
print(result)  # 输出: [6 7 8]
上述代码中,标量5被广播为[5, 5, 5],然后与原数组逐元素相加。该机制避免了显式复制数据,提升了计算效率并节省内存。
广播的内存优势
广播不实际复制标量值,而是通过底层迭代器在计算时动态应用,实现零内存开销的扩展操作。

2.3 不同行/列形状数组的自动扩展机制

在NumPy中,当对不同形状的数组进行算术运算时,系统会自动触发“广播(Broadcasting)”机制,使维度兼容的数组能够完成逐元素操作。
广播的基本规则
  • 从尾部维度开始对齐,向前匹配;
  • 若某维度长度为1或缺失,则沿该轴复制扩展;
  • 所有维度必须满足广播条件才能执行运算。
示例与分析
import numpy as np
a = np.array([[1], [2], [3]])  # 形状 (3, 1)
b = np.array([1, 2])           # 形状 (2,)
c = a + b                      # 广播后形状为 (3, 2)
上述代码中,a 沿列方向扩展为 (3,2),b 沿行方向扩展为 (3,2),最终实现加法运算。广播不复制实际数据,而是通过视图机制高效实现计算。

2.4 维度缺失时的隐式重塑行为分析

在张量计算中,当参与运算的数组维度不匹配时,系统会触发隐式重塑(broadcasting)机制。该机制依据特定规则自动扩展低维数组的形状以对齐高维结构。
广播规则简述
  • 从尾部维度向前对齐,缺失维度视为长度1;
  • 若某维度长度为1或与对应维度相等,则可广播;
  • 不满足条件则抛出形状不兼容异常。
代码示例与分析
import numpy as np
a = np.array([[1, 2], [3, 4]])    # 形状 (2, 2)
b = np.array([10, 20])            # 形状 (2,)
c = a + b                         # b 被隐式重塑为 (2, 2)
上述代码中,数组 b 在列方向被复制两次,形成与 a 相同的二维结构,从而完成逐元素加法。这种行为虽提升编程便利性,但可能掩盖维度设计缺陷,需谨慎验证中间张量形状。

2.5 广播过程中的内存效率与性能考量

在分布式训练中,广播操作常用于将模型参数从主节点同步到各工作节点。若处理不当,可能引发显著的内存开销和通信瓶颈。
减少冗余数据拷贝
通过复用缓冲区并采用零拷贝技术,可有效降低内存占用。例如,在 PyTorch 中使用 torch.distributed.broadcast 时应预分配张量:
import torch.distributed as dist

# 预分配张量避免重复申请内存
tensor = torch.zeros(1024, 1024).cuda()
dist.broadcast(tensor, src=0)
该代码确保仅使用一个固定内存块进行通信,防止频繁分配/释放带来的性能损耗。
通信优化策略
  • 使用 NCCL 后端提升 GPU 间传输效率
  • 合并小规模广播为批量操作,减少启动开销
  • 采用分层广播(tree-based)降低根节点带宽压力

第三章:多维数组广播的实践操作

3.1 二维矩阵与向量的加减乘除实战

在科学计算与机器学习中,二维矩阵与向量的运算构成线性代数的核心操作。理解其运算法则对构建高效算法至关重要。
基本运算规则
矩阵与向量的加减要求维度一致;乘法则遵循矩阵乘法规则,即矩阵的列数必须等于向量的行数。除法通常通过逆矩阵或标量除法实现。
Python 实现示例

import numpy as np

# 定义 2x2 矩阵和 2 维向量
A = np.array([[1, 2], [3, 4]])
v = np.array([2, 1])

# 加法(广播机制)
result_add = A + v  # 每行加上向量 v

# 矩阵与向量乘法
result_mul = A @ v  # 结果为 [4, 10]

print("加法结果:\n", result_add)
print("乘法结果:", result_mul)
代码中,A + v 利用 NumPy 的广播机制实现矩阵与向量逐行相加;A @ v 执行标准矩阵乘法,输出新向量。这些操作广泛应用于神经网络前向传播中。

3.2 高维张量间的广播运算案例演示

在深度学习中,高维张量的广播机制允许不同形状的张量进行逐元素运算。广播遵循从尾维度对齐、向前扩展的原则,当某维度长度为1或缺失时自动扩展。
广播规则应用示例
import numpy as np

# 创建 3x1x4 和 1x5x4 张量
A = np.random.randn(3, 1, 4)
B = np.random.randn(1, 5, 4)

C = A + B  # 广播后结果形状为 (3, 5, 4)
print(C.shape)  # 输出: (3, 5, 4)
上述代码中,A 的第2维(长度1)和 B 的第0维(长度1)均被广播扩展。最终每个维度取较大者,实现无复制内存的高效计算。
合法广播条件
  • 两张量从末尾开始比对各维度;
  • 每一维必须相等,或其中一者为1;
  • 缺失维度视为长度1。

3.3 条件广播:何时会触发错误与规避策略

在分布式系统中,条件广播(Conditional Broadcast)用于确保消息仅在特定前提满足时才被传播。若前置条件校验缺失或状态不一致,极易引发重复广播或漏播。
常见错误场景
  • 节点时钟不同步导致条件判断失效
  • 共享状态未加锁,引发竞态条件
  • 条件评估与广播操作非原子执行
代码实现与规避策略
func ConditionalBroadcast(ctx context.Context, cond bool, msg []byte) error {
    if !atomic.LoadBool(&cond) {
        return errors.New("broadcast condition not met")
    }
    // 加锁确保原子性
    mu.Lock()
    defer mu.Unlock()
    return publish(ctx, msg)
}
上述代码通过原子读取条件变量并结合互斥锁,确保条件判断与消息发布之间的原子性。参数 cond 表示预设条件,msg 为待广播消息,逻辑上避免了在并发环境下因状态变化导致的非法广播。
推荐实践
使用分布式锁或共识算法(如Raft)同步条件状态,可有效规避跨节点不一致问题。

第四章:复杂应用场景下的广播技巧

4.1 图像数据批处理中的广播应用

在深度学习中,图像数据通常以批次形式输入模型。当处理不同尺寸或通道的图像时,广播机制能自动对张量进行维度扩展,实现高效运算。
广播的基本原理
广播允许形状不同的数组进行算术运算。例如,将一个标量加到整个图像批次上,系统会自动将该值应用到每个元素。
import numpy as np
images = np.random.rand(32, 3, 224, 224)  # 32张RGB图像
mean = np.array([0.485, 0.456, 0.406])   # 三通道均值
std = np.array([0.229, 0.224, 0.225])    # 标准差
normalized = (images - mean[:, None, None]) / std[:, None, None]
上述代码中,meanstd 被广播至每张图像的对应通道。通过 [:, None, None] 扩展维度,使形状从 (3,) 变为 (3,1,1),从而与 (32,3,224,224) 兼容。
优势与适用场景
  • 减少显存占用,避免显式复制数据
  • 加速预处理流程,提升训练效率
  • 广泛应用于归一化、增强等操作

4.2 深度学习前向传播中的向量化优化

在深度神经网络的前向传播过程中,逐样本计算效率低下。通过向量化操作,可将矩阵运算批量处理,显著提升计算效率。
向量化实现示例

import numpy as np

# 输入批量数据 (m个样本)
X = np.random.randn(784, 128)  # 784维特征,128个样本
W = np.random.randn(256, 784) # 权重矩阵
b = np.zeros((256, 1))         # 偏置项

# 向量化前向传播
Z = np.dot(W, X) + b           # 广播机制自动对齐偏置
A = np.tanh(Z)
上述代码中,np.dot(W, X) 实现了对128个样本的线性变换并行计算,+ b 利用广播机制自动扩展偏置项。相比循环,运算速度提升数十倍。
性能对比
方法计算耗时(ms)内存访问效率
for循环420
向量化18

4.3 时间序列特征工程中的高效计算

在处理大规模时间序列数据时,特征提取的效率直接影响模型训练速度与系统响应能力。为提升计算性能,向量化操作和滑动窗口优化成为关键技术。
向量化加速特征计算
使用 NumPy 或 Pandas 的内置函数可避免显式循环,显著提升运算速度。例如,快速计算滚动均值:
import pandas as pd
# 假设 data 是时间序列 DataFrame,含 'value' 列
data['rolling_mean'] = data['value'].rolling(window=5).mean()
该代码利用 Pandas 的 rolling 方法,在 O(n) 时间内完成滑动窗口均值计算,底层由 Cython 优化实现,避免 Python 循环开销。
特征缓存与并行处理
  • 对重复使用的特征进行持久化缓存,减少冗余计算
  • 采用 Dask 或 Ray 实现跨时间片段的并行特征提取
  • 通过列式存储(如 Parquet)提升 I/O 效率

4.4 自定义函数中结合广播提升执行速度

在高性能计算场景中,自定义函数若能结合广播机制,可显著减少循环调用开销。广播允许不同形状的数组在兼容维度上自动扩展,从而实现向量化运算。
广播优化原理
当对不等尺寸张量进行操作时,系统自动扩展较小张量至大张量形状,避免显式复制数据,节省内存并加速计算。
示例:自定义归一化函数
import numpy as np

def batch_normalize(x, mean, std):
    # mean 和 std 为单维度参数,通过广播应用于整个批次
    return (x - mean) / std

# 输入批量数据 (128, 10),均值与标准差 (10,)
data = np.random.randn(128, 10)
mean, std = np.mean(data, axis=0), np.std(data, axis=0)
normalized = batch_normalize(data, mean, std)
上述代码中,meanstd 形状为 (10,),在计算时自动广播到 (128, 10),实现逐特征归一化,无需循环。
  • 广播条件:从末尾维度对齐,各维度长度相等或为1
  • 优势:减少内存占用,提升向量化执行效率

第五章:广播机制的局限性与替代方案综述

尽管广播机制在早期 Android 应用开发中被广泛用于组件间通信,但其固有的设计缺陷正逐渐暴露。最显著的问题是安全性与性能开销:全局广播可能被恶意应用监听,且频繁注册/注销广播接收器易引发内存泄漏。
广播的主要局限性
  • 上下文依赖性强,难以测试和维护
  • 无法保证消息传递顺序,尤其在高并发场景下
  • 跨进程通信(IPC)效率低,系统限制日益严格(如 Android 8.0 后对隐式广播的限制)
推荐的替代方案
方案适用场景优势
LiveData + ViewModelActivity/Fragment 间通信生命周期感知,避免内存泄漏
EventBus(谨慎使用)模块解耦事件通知轻量、发布-订阅模式灵活
Flow + Channel异步数据流处理支持背压,协程集成良好
实际迁移案例
某电商 App 将订单状态更新从广播迁移到 Kotlin Flow:
class OrderManager {
    private val _statusChannel = Channel<OrderStatus>(CONFLATED)
    val statusFlow = _statusChannel.receiveAsFlow()

    suspend fun updateStatus(newStatus: OrderStatus) {
        _statusChannel.send(newStatus)
    }
}
// 在 ViewModel 中观察
viewModel.statusFlow.onEach { status ->
    // 更新 UI
}.launchIn(lifecycleScope)
[Order Update] --> [Channel] --> [Flow] --> [UI Collector]

相关推荐

PaddleOCRApi面向 Windows 与 Linux 的轻量级 OCR 与YOLO目标检测 HTTP 服务

PaddleOCR 与YOLO目标检测 HTTP 服务。 项目通过 PaddleOCROnnx 原生库集成 OnnxRuntime加速能力,围绕 ONNX 模型部署, 以统一接口提供图像文字识别、YOLO 目标检测和 Tensor 数据输出。 功能概览 文字识别:支持图片 Base64、multipart/form-data 上传,以及文本和 JSON 结果。 目标检测:支持 YOLO 图片检测,返回检测框 JSON 或原始 Tensor。 浏览器演示:访问服务根地址,上传图片并切换 OCR、YOLO 模式。 健康检查:通过 /health 查看服务及 OCR、YOLO 引擎初始化状态。 并发处理:通过 OCR 引擎实例池处理并发请求,可调整实例数量。 体验与调用 启动后访问: 入口 地址 浏览器演示 http://localhost:5000/ 健康检查 http://localhost:5000/health 原生依赖 Windows:优先从 runtimes/win-x64/native/ 加载原生 DLL;该目录没有 PaddleOCROnnx.dll 时,尝试从可执行文件所在目录加载。主 DLL 与对应后端依赖应放在同一原生目录中,不要将同一组依赖分散到多个目录。 Linux:原生运行时位于 runtimes/linux-x64/native/,程序使用相对于可执行文件的运行时搜索路径查找随包部署的依赖。 后端选择:CoreOCROnnx 支持 ONNX Runtime、OpenVINO、TensorRT 后端。请使用与平台、进程架构、硬件和后端匹配的一整套运行时,不要混用不同后端或版本的依赖。

Python数据分析入门:NumPy数组操作全攻略(附实战代码)

本文是Python数据分析入门指南,重点讲解NumPy数组的核心操作。内容涵盖数组创建、索引切片、形态重塑、向量化运算及视图与副本等关键概念,并附带大量实战代码,帮助初学者快速掌握这一科学计算基石工具,提升数据处理效率。

algae的博客 898

NumPy核心操作全攻略

NumPy是Python科学计算核心库,提供高效的ndarray多维数组对象及数学运算功能。文章介绍了NumPy的核心数据类型ndarray的特性(固定大小、同类型元素、广播机制)、安装方式(通过pip安装),并详细讲解了多种创建数组的方法(array、arange、linspace、zeros/ones、full、eye)。同时阐述了常用操作:基本运算、reshape/resize调整维度、repeat重复元素、数组索引选取、flatten展平、矩阵点乘/转置/求逆,以及数组连接(hstack/vstac

weixin_73958875的博客 1007

从零开始玩转 NumPy:写给编程新手的科学计算入门指南

本文介绍了Python科学计算库NumPy的核心功能与应用。NumPy通过ndarray多维数组实现高效数据运算,速度比Python列表快10-100倍。主要内容包括:安装NumPy、创建数组的多种方法、数组索引与切片技巧、常用数学运算(基本运算/矩阵运算/统计函数),以及实战案例(图像灰度处理)。文章还讲解了数组形状操作和进阶索引技巧,并推荐了学习资源。作为计算机专业基础工具,NumPy在数据分析、机器学习等领域具有重要作用,掌握其核心功能对后续学习至关重要。

PTYDJI的博客 1244

Python期末逆袭指南NumPy核心考点全解析,从基础到实战万字长文(附真题演练)

NumPy是Python数据分析的基石,也是《Python程序设计》期末考试的重中之重。基础:如何创建各种形态的数组(arrayarangelinspace结构:如何查看和操作数组的维度、形状和数据类型。核心:如何利用索引和切片(特别是布尔索引)高效提取和处理数据。计算:如何运用广播机制和数学函数进行向量化运算。最后的建议动手敲代码:光看不练假把事。请在本地环境(Jupyter Notebook 或 PyCharm)中将文中的所有示例代码亲手敲一遍,观察输出结果。多改参数。

吾为热爱计科,致力于知识分享的践行者,此博客是我在这条道路上留下的足迹。 388

NumPy数组创建全攻略:从底层原理到七大核心方法实践

在Python数据科学与数值计算领域,数组是承载和操作数据的核心数据结构。其底层原理基于连续内存存储与同质数据类型,通过向量化操作和硬件优化实现了远超Python列表的计算性能,这一特性使其成为机器学习、图像处理和科学模拟等高强度计算场景的基石。理解数组的dtype、shape、strides等核心属性,是进行高效内存管理和性能调优的关键。本文聚焦于NumPy数组的创建,深入解析包括np.array()、np.zeros()/ones()/full()、np.arange()/linspace()、np.e

weixin_34032621的博客 315

NumPy 全面详解:Python 科学计算的基石

​(Numerical Python)是 Python 最核心的科学计算库,专为处理多维数组设计。魔法命令比较不同方法的性能差异,加深对NumPy优势的理解。建议结合Jupyter Notebook进行实践,通过。

不辉放弃的博客 1080

Python数据分析四大基础库深度解析与实战指南

1.2 核心数据结构: 属性 说明 示例 数组维度(秩) 各维度的大小 元素总数 数据类型 单个元素字节大小 (64位整数) 1.3 数组创建全攻略 基础创建方法 特殊序列生成 随机数组生成 1.4 高级索引与切片 布尔索引(数据筛选神器) 花式索引(灵活取值) 多维切片进阶 1.5 数组运算实战 广播机制Broadcasting) 矩阵运算 统计函数 函数 功能 示例 求和 均值 标准差 最大

zhanghongyi_cpp的博客 1017

Python3 模块精讲:NumPy 从入门到精通全攻略

在 Python 数据分析、机器学习、科学计算与人工智能领域,NumPy(Numerical Python) 是无可替代的核心基础库。它为 Python 提供了高性能的多维数组对象、向量运算能力与数学函数库,彻底解决了原生 Python 列表在数值计算上效率低、语法繁琐、不支持批量运算的痛点。

qq_28372005的博客 639

从0到1:PyTorch张量核心全攻略,带你飞进GPU加速的奇妙世界

本文全面介绍了PyTorch张量的基础概念、操作、高级特性及GPU加速实践。张量作为深度学习的核心数据结构,支持多维数组操作,并具备GPU加速和自动微分等独特优势。文章详细讲解了张量的创建、索引、切片、数学运算形状操作,并深入探讨了自动求导机制、叶子张量与非叶子张量、广播机制等高级特性。此外,文章还介绍了GPU加速的原理与实践,展示了GPU在深度学习模型训练中的显著性能提升。最后,文章总结了内存管理问题和性能优化技巧,并展望了深度学习框架的未来发展方向,强调了持续学习的重要性。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1410

PyTorch实战指南:从零开始掌握张量操作

本文详细介绍了PyTorch中张量(Tensor)的基础操作与实战技巧,帮助读者从零开始掌握深度学习的核心数据结构。内容涵盖张量创建、变形、运算等关键操作,并提供了图像数据处理的实际案例,是学习PyTorch和深度学习的实用指南

weixin_33734785的博客 332

numpy到pandas:量化项目实战的完整学习路径

数据分析的核心是处理与计算。在Python生态中,numpy提供高性能数组运算,pandas则构建于其上的DataFrame表格模型,两者是数据清洗、分组聚合、时间序列分析的基础。掌握它们的原理与配合方式,才能高效完成从数据读取到指标计算的完整流程。量化回测正是这一能力的典型应用场景:通过pandas处理行情数据,计算收益率、移动平均、生成交易信号并评估策略表现。本文梳理了一条从numpy切片思维、pandas核心操作到量化项目实践的落地方案,帮助初学者建立向量化处理意识,规避常见坑点,在实际工程中真正用好

weixin_34284188的博客 422

PyTorch张量操作全攻略:从入门到精通

《PyTorch张量操作完全指南》摘要:本文系统讲解PyTorch核心数据结构张量(Tensor)的十大核心操作。从创建方法(直接构造、NumPy转换、特殊矩阵生成)到基本属性(形状、数据类型、存储设备),详细演示了索引切片、维度变换(reshape/view/permute)、数学运算广播机制等关键操作。特别强调实际开发中的易错点:GPU设备转移、内存连续性要求、自动求导标记等,通过对比NumPy的异同帮助开发者规避常见形状错误。最后通过矩阵运算和梯度计算实例,展示张量作为PyTorch基石的核心价值。

eqwaak0的博客 1132

Python数据分析全攻略:从入门到实战完整实战指南

Python数据分析是一个系统性的知识体系,其教程内容通常从基础到高级,涵盖数据处理、分析、可视化和机器学习等多个方面。以下是一个全面的Python数据分析教程内容结构,包含章节目录、核心知识点、必须掌握的工具、相关重要人物、应用场景及后续发展方向。

热爱技术与前沿创新,深耕科技领域,在科创中精进自我;探索技术乐趣,分享技术干货与成长心得,以技术为伴,热爱生活,在科创与生活中双向成长。 442

Python必学框架全攻略

本文介绍了Python中几个重要框架及其学习建议: Web开发框架:Django(全栈式)、Flask(轻量级)、FastAPI(高性能API) 数据分析框架:NumPy数组计算)、Pandas(数据处理)、Matplotlib/Seaborn(可视化) 机器学习框架:Scikit-learn(传统机器学习)、TensorFlow/Keras/PyTorch(深度学习) 学习建议包括明确目标、动手实践、项目驱动、阅读文档等,强调从基础框架入手,循序渐进地学习。

luanma150980的博客 269

收藏备用|程序员/小白转行大模型全攻略,从零入门不踩坑

大模型入门不难,难的是“坚持实操、不盲目跟风”。对于小白、程序员来说,核心路径是:定方向→打基础→学核心技术→做实操项目→借力开源→求职深耕。不用追求“一口吃成胖子”,每天进步一点,坚持6-12个月,就能成功转型大模型领域。对于正在迷茫择业、想转行提升,或是刚入门的程序员、编程小白来说,有一个问题几乎人人都在问:未来10年,什么领域的职业发展潜力最大?答案只有一个:人工智能(尤其是大模型方向)

xxue345678的博客 1142

PyTorch入门实战:从环境搭建到逻辑回归模型实现

张量(Tensor)作为深度学习框架中的核心数据结构,本质上是多维数组的扩展,支持高效的数值计算与GPU加速。其自动微分(Autograd)机制通过构建动态计算图,实现了梯度的自动计算与反向传播,这是现代深度学习模型能够高效训练的技术基石。这一技术价值在于极大简化了模型开发流程,使研究者与工程师能专注于模型结构设计,而非繁琐的梯度推导。在工程实践中,从环境配置、数据预处理到模型训练与评估,PyTorch提供了完整的工具链。本文以逻辑回归这一经典二分类模型为切入点,详细演示了如何利用PyTorch的张量操作和

congsikuai0611的博客 317
上一篇: Pandas时间序列操作精华(重采样频率实战指南)
下一篇: f-string左对齐、右对齐、居中对齐怎么用?99%的人都忽略了这些细节
Instrustar
博客等级 码龄1年 182粉丝 2226原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值