numpy.zeros shape start with 0

NumPy向量实战:从内存布局到高频项目应用 向量是科学计算与机器学习的数据基石,其本质是连续内存中同类型数值的有序集合。理解向量的内存连续性、明确dtype约束和维度(ndim/shape)定义,是发挥NumPy高性能的关键前提。基于C内核与SIMD优化,NumPy向量化操作可比原生Python循环提速百倍以上,支撑pandas数据清洗、scikit-learn模型训练及PyTorch张量计算等核心任务。本文聚焦真实工程场景——电商用户行为归一化、传感器滑动窗口均值、图像通道增强,通过可复用的向量化代码,解决维度对齐、广播陷阱、内存溢出与NaN传播等 阅读详情

有时会遇到如下shape的array

>>> a = np.zeros([0, 10])
>>> a
array([], shape=(0, 10), dtype=float64)

>>> b = np.zeros([0, 2, 2])
>>> b
array([], shape=(0, 2, 2), dtype=float64)

这时a 和 b都是空数组。

那为什么要规定shape呢,
为了以后用什么shape来填充这个数组提供可读性。

参考链接

OpenCV图像合成与特效:用np.zeros_like快速创建蒙版和画布的3个实战技巧 本文深入探讨了OpenCV中np.zeros_like函数在图像合成与特效制作中的3个实战技巧,包括精准ROI提取、动态混合效果实现和智能边框生成。通过高效创建与原始图像匹配的蒙版和画布,显著提升图像处理效率,适用于证件照抠图、医学图像分析等多种场景。 阅读详情

相关推荐

50个Numpy核心函数实战指南:从数组创建到向量化运算

在Python数据分析与科学计算领域,向量化运算和数组操作是提升代码效率的核心技术。其原理在于利用底层C语言实现的高性能批量计算,替代低效的Python循环,从而实现数量级的性能飞跃。这一技术价值在于,它能直接决定数据处理任务的耗时是“分钟级”还是“小时级”,是机器学习、数据科学项目成功的基石。典型的应用场景包括大规模数据集清洗、特征工程、数值模拟以及模型训练前的数据预处理。本文聚焦于Numpy这一实现向量化运算的基础库,通过精选的50个核心函数,系统讲解如何高效地进行数组创建、变形、统计计算及高级索引,其

weixin_33857679的博客 445

NumPy 矩阵处理

NumPy 是 Numerical Python 的简称,是高性能计算和数据分析的基础包。本书中几乎所有高级工具都是建立在它的基础之上,下面是它所能做的一些事情: ndarray,快速和节省空间的多维数组,提供数组化的算术运算和高级的 广播 功能。使用标准数学函数对整个数组的数据进行快速运算,而不需要编写循环。读取/写入磁盘上的阵列数据和操作存储器映像文件的工具。线性代数,随机数生成

Bluebelfast的专栏 2万+

PyTorch Tensor 核心五属性:shape、dtype、device、requires_grad 与 data

张量(Tensor)是深度学习框架中最基础的数据结构,其本质远超多维数组——它是携带计算图信息、内存布局约束和硬件调度契约的复合对象。理解 Tensor 的 shape(形状)、dtype(数据类型)、device(设备位置)、requires_grad(梯度追踪)和 data(底层存储)五大核心属性,是掌握自动微分、GPU加速与内存优化的前提。这些属性共同决定了前向传播的执行路径、反向传播的梯度流向以及跨设备张量操作的安全边界。在模型开发、调试与部署中,如 loss.backward() 失败、.to(d

weixin_30764883的博客 390

【Python】numpy数组用dtype=float16初始化的坑

【Python坑系列】为了节约空间,使用numpy数组时候采用了float16,结果发现精度远远不达标默认的floar64是最接近原本浮点数的a = 0.0001 * np.ones(10,np.float16) a Out[206]: array([ 0.00010002, 0.00010002, 0.00010002, 0.00010002, 0.00010002,

小白兔的窝 3万+

TensorFlow GPU计算图重构:从NumPy到万倍加速的工程实践

NumPy作为Python科学计算基石,其性能瓶颈本质源于CPU内存带宽与BLAS实现限制;而TensorFlow通过延迟执行、静态图编译与GPU运行时协同,将数组操作升维为可端到端优化的计算图。其核心原理在于数据流图调度、算子融合(如XLA)、显存零拷贝及混合精度计算,技术价值体现在大幅降低PCIe搬运开销、消除Python解释器GIL、提升CUDA warp利用率。典型应用场景包括大规模矩阵运算、图像批量预处理、稀疏迭代求解与实时向量检索。本文聚焦TensorFlow 2.x在A100等现代GPU上的落

diaomeijiao3430的博客 377

NumPy数组内存与视图机制实战:避开view/copy陷阱

NumPy数组本质是带元数据的连续内存块,其行为差异源于strides、shape和内存布局的协同作用。理解view与copy的生成规则、广播的维度对齐逻辑、reshape与transpose的内存语义,是写出稳定高效数值代码的基础。这些机制直接决定数据清洗、特征工程和模型预处理中的内存占用、执行速度与结果正确性——尤其在处理时序数据、图像矩阵或GB级遥感数据时,strides不匹配或隐式拷贝可能引发静默错误或性能雪崩。本文聚焦真实项目中最易踩坑的数组操作场景,以内存视角解构NumPy核心行为。

weixin_33981932的博客 470

python怎么找一个矩阵_Python(NumPy,SciPy),找到矩阵的零空间

我试图找到给定矩阵的零空间(Ax = 0的解空间).我找到了两个例子,但我似乎无法工作.而且,我无法理解他们为实现目标所做的工作,所以我无法调试.我希望有人能够指引我完成这件事.文档页面(numpy.linalg.svd,和numpy.compress)对我来说是不透明的.我通过创建矩阵C = [A|0],找到减少的行梯形形式并按行求解变量来学习.在这些例子中,我似乎无法遵循它是如何完成的.感谢您...

weixin_28709715的博客 824

Unity UI适配核心:Canvas Scaler模式解析与2023版避坑指南

UI适配是游戏与应用开发中的基础挑战,其核心在于确保界面元素在不同屏幕分辨率与设备上保持视觉一致与功能可用。原理上,系统通过坐标转换与缩放计算,将设计稿的布局映射到物理屏幕。技术价值在于提升用户体验的一致性与产品的跨平台兼容性。应用场景广泛覆盖手游、PC端应用及各类交互界面。本文聚焦Unity引擎中的Canvas Scaler组件,深入剖析其Scale With Screen Size等模式的工作原理,并结合锚点设置、安全区域处理等高频搜索热词,提供解决UI错位、拉伸及异形屏适配等常见问题的工程实践方案,帮

weixin_30920597的博客 622

python numpy会出现shape等于0

import numpy as np a=np.zeros([3,10]) b=a[a[:,0]>0] b.shape (0, 10)

test 3501

PLSQL 14.0.6 下载使用教程

众所周知,PLSQL 只是一个oracle第三方开发测试工具,它依赖oracle 客户端搭配使用,但是oracle 客户端有2G,相当庞大,不建议安装。所以我们如果下载安装好PLSQL,再下载好轻量级的支持远程链接的oracle客户端,这样搭配使用可以的话就最好了,答案是可以的。 第一步: PLSQL 下载与安装 PLSQL 14.0.6 下载地址 : https://www.allroundautomations.com/registered-plsqldev/ 下载下来,除了安装路径更改一下,

qq976511508的博客 2134

Axure RP9 利用中继器实现列表数据的切换,分页器数据的动态交互加载

Axure RP9 利用中继器制作分页组件 在原型制作中,如何实现分页数据的动态加载、分页与数据的交互,每页显示条数的设定。下面通过制作五年级一班成绩单分页列表,分享给大家,适合有一定axure使用基础的人员,如有更好的方案,请多多指教。 最终效果图: 步骤1:首先利用中继器画出成绩单列表,并绑定成绩单数据。 步骤2:画出每页显示条数控制下拉框,利用中继器画出分页组件 步骤3:新增全局标量maxpage(显示的最多页码),minpage(显示的最小页码),i(循环计数),j(最循环数),selectpa

shandongmike的博客 6817

NumPy数组创建全解析:empty、zeros、ones与full函数性能与应用指南

在Python数据科学和数值计算中,数组是处理大规模数据的核心数据结构。NumPy作为该领域的基石库,其数组创建函数直接关系到内存管理和计算效率。从原理上讲,empty()仅分配内存而不初始化,速度最快但存在内存残留风险;zeros()和ones()则提供确定性初始值,确保数据安全;full()允许任意值填充,兼顾灵活性与明确意图。这些函数的技术价值在于平衡性能、安全性与代码可读性,是构建机器学习模型、图像处理算法和科学计算应用的基础。在实际工程中,根据是否需要立即覆盖数据、初始值要求以及内存布局优化等场景

weixin_30808693的博客 363

别再只会用imread了!用NumPy的zeros/ones/empty创建OpenCV图像的保姆级教程

本文详细介绍了如何使用NumPy的zeros/ones/empty函数创建OpenCV图像,替代传统的imread方法。通过对比三大函数的特性和适用场景,结合实战案例展示如何生成渐变图像、测试图案和高级噪声,帮助开发者提升图像处理效率和精确控制能力。

weixin_30635053的博客 305

正点原子lwIP实战指南——从FreeRTOS移植到网络应用开发

本文详细介绍了如何将轻量级TCP/IP协议栈lwIP移植到FreeRTOS实时操作系统上,并基于正点原子STM32开发板进行网络应用开发。内容涵盖从使用STM32CubeMX快速搭建工程、核心概念解析(RAW/NETCONN/Socket API),到关键的系统适配、驱动实现,并通过TCP Echo服务器和云台控制两个实战案例,手把手指导读者完成从移植到应用开发的全过程,帮助嵌入式开发者快速掌握lwIP在FreeRTOS环境下的稳定部署与开发技巧。

s4t5u6v的博客 1000

一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】

本文主要译至并加上了部分笔者的见解,对于全面理解LSTM有一定的帮助。

zik的博客 3078

别再只会用imread了!用NumPy的zeros/ones/empty函数创建OpenCV图像的保姆级指南

本文详细介绍了如何使用NumPy的zeros、ones和empty函数创建OpenCV图像,揭示了图像数据的本质是NumPy多维数组。通过对比三大创建函数的性能和应用场景,提供了五种特殊图像的创建技巧,包括纯色画布、随机噪声、渐变背景等,并分享了内存优化和高级应用案例,帮助开发者提升计算机视觉处理效率。

weixin_30918633的博客 437

wxComboBox类的使用方法及示例代码

其中,parent表示该控件的父窗口,ID_COMBOBOX是该控件的ID,用于在事件处理函数中区分不同的控件,"默认选项"是下拉列表框的默认选项,options是wxArrayString类型的数组,用于存储下拉列表框中的选项,style可以指定wxComboBox的样式。wxComboBox是wxWidgets中的一个常用控件,它可以被用来显示一组在下拉列表框中的选项,并允许用户从中选择一个选项。上述就是wxComboBox类的基本使用方法,使用这个控件可以方便地实现下拉列表框的功能。

学习使你进步。 712

NumPy(二):NumPy创建数组的几种方式np.zeros()/ np.ones() /np.arange()/ np.linspace()/ np.indices()

介绍了Python的NumPy创建数组的五种方式,主要介绍了前两种。此外,增加了创建数组时修改指定数据类型和修改数据类型的方法。

weixin_46529778的博客 6854

Vue Print Designer——一款让打印模板的设计变简单的可视化打印设计器

Vue Print Designer——一款让打印模板的设计变简单的可视化打印设计器

bjzhang75的博客 682

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

NumPy数组创建完全指南:从基础函数到性能优化实战

在Python数据分析与科学计算领域,数组是构建一切数值运算的核心数据结构。其底层原理基于连续内存块存储与高效向量化操作,通过预编译的C代码实现远超纯Python循环的计算性能,这一特性使其成为机器学习、图像处理和大规模数值模拟的基石。理解数组的创建机制,是掌握高效数据操作的第一步。本文聚焦于NumPy数组创建这一关键技术,深入解析`np.array`、`np.zeros`、`np.linspace`等核心函数的设计逻辑与适用场景,并针对`dtype`数据类型选择与内存预分配等常见性能陷阱提供工程实践解决方

401

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

从内存布局理解NumPy广播与视图机制

NumPy的核心并非API函数,而是ndarray的内存结构——连续字节块配合shape、strides、dtype三元元数据。其高效源于C-order内存布局与stride驱动的索引计算,广播本质是stride=0的逻辑映射,视图机制则依赖offset与base引用实现零拷贝切片。这种设计使转置、reshape等操作具备O(1)时间复杂度,支撑了Pandas、PyTorch等库的底层张量抽象。掌握strides计算与contiguous判断,是解决ValueError: operands could no

chunqingtai2922的博客 696

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

从零开始:用TensorFlow 2.0和NumPy手搓一个CNN,搞懂卷积到底在算啥

本文详细介绍了如何使用TensorFlow 2.0和NumPy从零开始构建一个卷积神经网络(CNN),深入解析卷积运算的核心原理。通过手工实现卷积层、池化层等关键组件,并结合可视化演示,帮助读者彻底理解CNN的工作机制。文章还涵盖了现代CNN的进阶知识和工业级实现技巧,适合深度学习初学者和希望深入理解CNN底层原理的开发者。

weixin_30536513的博客 485

Numpy

Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组。Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务,使用Numpy比直接使用Python要简洁的多。Numpy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器。NumPy提供了一个N维数组类型ndarray,它描述了相同类型的“items”的集合。

qq_32381773的博客 230

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

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

weixin_34032621的博客 342

Numpy学习笔记(一)

(1)NumPy的核心对象ndarray 用于表示N 维数组类型。它描述相同类型的元素集合。 可以使用基于零的索引访问集合中的项目。 (2)Ndarray的创建 可以使用numpy.array()函数,具体形式为 numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0) ...

weixin_30500663的博客 107
上一篇: pytorch repeat_interleave用法
下一篇: leetcode 1337. The K Weakest Rows in a Matrix(矩阵中最弱的K行)
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值