自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Python草堂的博客

Python草根们交流、学习的乐园。草根者,非计算机专业的计算机爱好者也!

  • 博客(50)
  • 资源 (7)
  • 收藏
  • 关注

原创 将其它输入法的词库转换为微软拼音输入法的自学习词库

新年第一天,我回归了微软拼音输入法,享受纯净无广告的输入!

2024-02-18 09:37:48 579

原创 多条件见多值查询的 Excel 公式和 python 函数

excel多条件查询多值,并将值分布到一行的各列。

2023-07-12 17:02:20 842

原创 我问了 ChatGPT 一个问题:我生活在哪个世纪?

我问了 chatGPT 一个问题。

2023-01-17 08:48:47 603 2

原创 python批量旋转裁剪图片实战

python批量旋转裁剪图片实战引子有一本PDF电子书,由扫描的图片生成的,每页的截图看起来如下图:它是展开扫描的,两页并列在一张图片上。并且每页又是分两栏,这样的PDF在手机、平板上,需要放大阅读,不停地左右移动,非常不便。就想到将PDF导出为图像文件,将张图片分割为两张,在合成为PDF,这样阅读起来就舒服多了。导出PDF为图像后,发现图像又是这样的:有两个思路:一是 在 PS 中创建一个动作,对图片进行旋转、裁剪、新建、粘贴、另存为操作,再对得到的图片重命名;不断重复这个过程。学

2021-11-17 11:34:24 3030

原创 纯 python 开发批量读取照片 Exif 信息的小程序

自己动手写一些小程序解决工作中的问题,是学习 python 的高效途径。这中间会遇到一些不动手想不到的问题,一个一个地解决它们,你 python 开发水平就会突飞猛进!本文总结了纯 python 写的批量读取照片的 Exif 信息保存到 csv, xlsx 文件中的小程序的结构。模块组成、图形界面、打包工具等。读取的信息保存为 .csv, .xlsx 文件。

2021-10-14 10:00:41 893 1

原创 Pyinstaller 打包避坑指南之六

这是 pyinstaller 打包系列的最后一篇,主要讨论一下修改 `.spec` 文件,重新打包的高级用法。

2021-09-22 16:00:23 1822

原创 pyinstaller 打包避坑指南之五

运行 pyinstaller 命令的高级方式一般情况下,直接在命令行中运行 pyinstaller 命令就可以完成打包任务,但当配置的参数很多,又需要反复进行打包测试,每次都从头输入很长的命令是一件痛苦的事,还容易出错。这时,我们就可能想到用 .bat 批处理命令,但由于系统中有多个 python 环境,windows 的批处理经常因为找不到正确的打包环境而出错。推荐 通过 python 脚本来完成打包测试任务,步骤如下:从 windows 开始菜单启动 vscode,不要从 python pro

2021-09-18 10:32:25 582

原创 pyinstaller 打包避坑指南之四

pyinstaller 做了什么?运行pyinstaller 命令打包脚本,它主要做了以下事情:读取并分析你的脚本代码;找到执行你的脚本需要的其它模块和 python 库;收集这些文件的副本,以及活动的 python 解释器(打包环境);将这些文件的副本放到单个文件夹中,或单个可执行文件中。一般情况下,启动命令行窗口,并转到要打包的脚本所在的目录,通过一个简短的命令即可完成打包:pyinstaller myscript.py可以添加一些选项来控制打包的方式,例如:pyinstaller -

2021-09-17 11:39:02 1739

原创 pyinstaller 打包避坑指南之三

pyinstaller 打包的两种方式pyinstaller 有两种打包方式:产生一个目录作为完整的可执行程序,把这个目录 copy 给其他人,运行其中的***.exe文件即可运行程序;产生单独的可执行文件,即一个 ***.exe文件。我倾向于第一种方式,这也是 pyinstaller 默认的方式,要使用第二种方式,在 pyinstaller 命令中添加 -F参数即可。后面会介绍 pyinstaller 命令的主要参数及其用法。pyinstaller 命令示例下图是我打包时的命令:运行

2021-09-16 15:25:46 627

原创 pyinstaller 打包避坑指南之二

pyinstaller 生成的包为什么那么大?pyinstaller 会把打包时的 python 环境中安装的所有库包都打包到生成的包中,我们日常编程的 python 环境日积月累地安装了各种 python 库,尤其是通过 Anaconda 平台安装的 python,集成的包就更多。并且 Anaconda 有一个 base 环境,编程虚拟的环境没有安装的库,有时会到 base 环境中去查找。所以,不要在 Anaconda 的虚拟 python 环境中打包。在 Anacodna python 环境中打包,失

2021-09-16 10:09:06 1691

原创 pyinstaller 打包避坑指南之一

引子部门需要对 3 个野外工作队的活动进行管理,要求野外工作队随时使用手机对工作内容进行拍照上传,照片中需要采集 GPS 位置信息,每个工作队每天要上传上百张照片,任务完成时采集了 1 万多张照片,需要整理这些照片的 Exif 信息,尤其是位置信息到数据库中,显然,人工一张一张地读取这些照片的 Exif 信息,并记录下来的工作量甚至超过了野外工作,是难已接受的。于是就想到:能不能用 python 写一段代码,批量自动读取这些照片的 Exif 信息并保存到 csv/xlsx 中呢?python 的 Ex

2021-09-15 16:48:57 496

原创 实例讨论数据可视化的配色思路

引子有一数据集如下:数据解读:研究对象的目标层 A 分为 B1, B2, B3 三个准则层;B1 层下有 C1, C2, C3, C4 4个指标;B2 层下只有 C5 一个指标;B3 层有 C6, C7, C8 3个指标。指标权重是该指标在所属准则层的权重;组合权重是该指标在目标层的权重。现在,要绘制上述数据的“组合权重”的饼图。如何给这个饼图配色呢?数据可视化配色的误区下图是群友绘制的图:他自己对结果不满意,他认为是颜色搭配太丑。我们来看看,他的配色问题出在哪:颜色太

2021-08-10 11:17:01 668 1

原创 python 找素数的思路和算法

昨天,python草堂 457079928 QQ 群里有一位网友发了一小段 python 代码,是求100以内的素数的问题。问他的代码问题出在哪?代码截图如下:这段代码运行的结果如下:显然,这段代码有两个突出的问题:不能正确判断一个数是否是素数;有很多重复的数。搜索 “python 素数”,会出来很多关于 python 求素数的文章和示例代码,一看,竟然有很多示例代码存在与他的代码相同的问题。一句话:搜索很方便,但垃圾也很多。就动手尝试用 python 实现了一下求区间内素数的问题,感觉

2021-06-25 15:43:00 7177 2

原创 matplotlib errorbar 仅绘制正误差棒简单方法

昨日,Python草堂群的一位网友问了一个问题:如下图,怎样去掉误差棒在条形图的里面的那一部分,即仅显示正误差棒,不绘制负误差棒。matplotlib 的 Axes 对象有一个 errorbar 方法,Axes.errorbar(self, x, y, yerr=None, xerr=None, fmt='', ecolor=None, elinewidth=None, capsize=None, barsabove=False, lolims=Fal

2021-04-30 09:10:30 1813

原创 matplotlib 的 spines模块详解

spines 模块详解matplotlib 设计了一个 spines模块,用于在创建 axes 时生成 Spine对象(坐标轴线)。spines模块定义了一个 Spine 类,为类定义了 25 个方法,其中有 3 个是 classmethod。Spine 类Spine 类的定义一个 axis spine – 标注数据区域边界的 line。Spines 是连接 axis tick 标记的直线,并且标注数据区域的边界。可以通过 set_position 将它放置在任意的位置。默认的位置是:('o

2021-02-18 17:06:22 10034 3

原创 Mpl绘制心肌模型图方法二:Axes.bar + polar 坐标系

上一篇介绍了 AHA 的 左心室17段分割模型的定义,和用 axes.pie() 绘制该模型图的方法。还可以用 matplotlib 的 axes.bar() + polar绘制该模型图,这种方法相对于 axes.pie() 方法更加灵活适用。模型的元数据、完整的代码、高清成图请到资源中下载:https://download.csdn.net/download/sinat_32570141/15196030Axes.bar() + polar 实现polar + bar 绘制圆环图 ringsm

2021-02-11 09:42:12 1005 3

原创 matplotlib 绘制心肌模型图方法一:Axes.pie

美国心脏协会(AHA)发表了左心室心肌的分割和命名法,即心脏分割模型,现在医学界广泛使用该模型描述疾病对心肌区域和壁功能的影响。该模型图类似靶心图、牛眼图、嵌套环形图、bullseye chart.下图是上述网站提供的模型图之一,它精确的表述了心肌模型的定义。matplotlib 官网上有一个心肌模型的模拟实现:https://matplotlib.org/gallery/specialty_plots/leftventricle_bulleye.html?highlight=bullseye.

2021-02-10 11:46:55 2276 2

原创 Axis 对象详解之一_创建我们熟悉的笛卡尔坐标系

Axis 对象详解之一_创建我们熟悉的笛卡尔坐标系matplotlib 使用下面的代码创建一个 figure, axes:import matplotlib.pyplot as pltfig,ax = plt.subplots()plt.show()就会自动创建左边和底边的 axis,在 matplotlib 内部,这个 axis 是如何创建的呢?Axes 是最重要的容器对象,包含大部分图形元素:Axis、Tick、Line2D、Text、Polygon等,并设置坐标系统。所以,m

2021-01-27 10:01:59 727 1

原创 matplotlib 绘图之坐标变换

本计划接着 Figure, Axes 对象,讨论 Axis 对象和 Ticks 对象。因为涉及到坐标变换,因此先把 matplotlib 的坐标变换总结一下。示例代码有很多重复部分,文中仅贴出关键不同的部分,需要完整的代码,请到这里 https://download.csdn.net/download/sinat_32570141/14926207 下载完整的 .ipynb文件。引子与其它绘图包一样,Matplotlib 包含用于确定画布上绘制的所有元素的最终位置的任意几何变换的框架,以便在不同的坐

2021-01-23 16:15:24 7460 1

原创 设置 jupyter lab 中使用 JetBrains Mono 字体

JetBrains Mono 字体一出,成为码农的最爱,在 jupyter lab 中如何设置使用这一字体呢?网上的方法众多,此法最便捷,随手记下,备忘:Settings --> Advanced Setting Editor --> User Preference添加:{ "codeCellConfig":{ "fontFamily": "JetBrains Mono" }}即可。...

2021-01-09 14:52:09 1016 2

原创 pyplot.plot 绘图 marker 过密怎么办?

plot marker 密度过大怎么办鉴于多数代码比较简单,本文的示例源代码就不全部放上来了,那样太长。需要的可以下载完整的 .ipynb 文件,包含了每一步的示例源代码,下载地址:https://download.csdn.net/download/sinat_32570141/14052756日前,Python草堂群的一位网友用pyplot.plot绘制的图形,开启 marker后,由于 points 密度太大, marker 堆叠在了一起,想少标注一些点,问应该怎么办?推荐两个方法:因为他是

2021-01-09 11:38:48 5113 4

原创 选择 DataFrame 列的方法大全

因 457079928 python草堂群,网友 @星河·璀动 问到pandas选择数据列的问题,故把自己的学习总结的笔记整理出来。完整的ipynb文件,和文中示例数据请移步python草堂群下载。注意:这些方法返回的都是视图。如果你确信原始数据的一些列是无用的,可以在删除这些列后,创建 DataFrame 的一个 .copy(deep=True),然后删除原 DataFrame, 以节省内存;如果列不是很多,在导入数据时就排除这些列。选择列的两种思路需要的列较少,直接选择需要的列;不

2020-11-23 10:57:15 6237

原创 一文彻底解决 matplotlib 中的字体管理

一文彻底解决 matplotlib 中的字体管理如果根据本文,在windows, matplotlib, python 中遇到字体的问题仍然不能自己解决,我先投降!!!使用 matplotlib 可视化数据时,经常要面对字体设置的问题。在要用到中文时,如果设置不当,会出现乱码。网上已经有很多文章提供了一些解决方法,但多数是片段式的“授人以鱼”,本文将系统地讨论 matplotlib 中的字体管理,希望能“授人以渔”。环境:Windows 10 + anaconda (python 3.8.3) + m

2020-11-20 14:47:36 12242 4

原创 字符集和字符编码(Charset & Encoding)

字符集和字符编码一文参透字符编码的难题!引子在 python 中,处理字符串是常见任务,因为字符串编码问题,经常出现字符串乱码。在 matplotlib 绘图时,text对象,如 axes_title, axis_label,使用中文时,也会出现乱码的情况。但这是因为字体管理的原因,与 python 解析字符串时的乱码,有本质上的不同。在 Python 中,有 2 种常用的字符串类型,分别为 str 和bytes 类型,其中 str 用来表示 Unicode 字符,bytes 用来表示二进制数据。

2020-11-20 11:40:47 1898 1

原创 numpy, pandas 中 axis 概念和运算过程解析

numpy, pandas 中 axis 概念和运算过程解析numpy 中有一个 axis 概念,多维数组运算时,我们常被 axis 弄晕!本文尝试在2维平面的表格中解析 numpy 4-d array 的运算过程。在 numpy, pandas 中,很多函数,尤其是一些描述统计函数都有一个 axis 参数。axis参数的不同,会得到不同的运算结果。pandas中的axis来源于 numpy, 两者的含义和规则是一样的。所以我们理解了 numpy 的 axis,对 pandas 中的 axis 参

2020-11-16 17:34:36 1484 1

原创 绘图时如何设置图像的大小和分辨率

前面用三篇文章讨论了图像的大小、分辨率等概念:004–学Matplotlib需要拧清的概念之Inches, PPI, DPI05-Matplotlib中图像的尺寸和分辨率06 - matplotlib中应知应会numpy存储、交换图像本以为这个方面的内容应该以讲得很清楚了,甚至可能太细、太深入了。但最近仍有网友在 python草堂 群里问到这个话题。今天再把三篇内容做一个串联,讨论一下:绘图图像尺寸;保存图像尺寸;显示图像尺寸;打印图像尺寸;之间的关系,并就绘图时应该怎样设置图像

2020-09-29 16:59:30 8923

原创 用窗体设置的 Excel 完美聚光灯

上一篇,发布了可以自定义的设置的 Excel 聚光灯,通过表格来设置虽然很简单,但有些网友认为使用窗体或按钮来设置更好,因此,设计了一个窗体来设置聚光灯的效果。基于该模板创建的工作簿打开时会自启动设置窗口。中间要调用设置窗口,可以使用 “Ctrl + L ” 快捷键。需要这个模板的可以到https://download.csdn.net/download/sinat_32570141/12858067 下载。或移步群 457079928 下载。使用中发现问题的,欢迎交流!...

2020-09-18 10:57:13 583

原创 详解用 matplotlib 绘制动态条形图

详解用 matplotlib 绘制动态条形图端午安康!近日看到联合国网站提供的世界人口数据集,其中一个子数据集包含了各国 1950-2015年的人口数据。假日值班,有自由的时间,就基于这个数据集,用 matplotlib 实现了一个世界人口 66 年变化的动态条形图。最后的 gif 图:下面把实现的主要步骤记录下来。原始数据、详细的源代码请到 QQ群:python草堂,457079928 下载,有问题也可以到那里讨论。数据集介绍‘population_estimates.csv’ ,逗号分隔

2020-06-27 11:17:51 4478 3

原创 matplotlib._axes 子包架构

前情回顾前面我们详细介绍了 matplotlib 的Figure对象,以及 Figure 对象的add_axes() 和 add_subplot() 方法。matplotlib.artist模块提供了一个 Figure 类,它是顶层的容器型Artist,它容纳所有绘图元件。在2D平面坐标中,你应该把它看成一个矩形(Rectangle)区域。创建一个Figure也就是在画布上定义一块矩形区域。这个矩形区域有两个最根本的用处:可以再划分为多个子区域;如subplot就是在Figure矩形区域中划分子

2020-06-02 11:50:07 547 1

原创 matplotlib 配色之内置 colormap

Matplotlib 配色之内置 colormap概述让图表看起来比较美观是图表配色最末的目的,配色最核心的目标是为你的数据集找到一个好的表达。对于任何给定的数据集,最佳的配色取决于许多因素,包括:表现形式或者度量数据。你对数据集的理解(如:是否有一个偏离其它值的临界值?)如果你正在绘制的参数(变量本身)有一个直观的配色方案如果在这个领域有一个标准(行业配色标准或习惯),读者可能会...

2020-04-07 09:01:04 12460 1

原创 matplotlib 配色之 colorbar 模块详解

matplotlib.colorbar 模块详解引子上一篇我们围绕colormap颜色映射,详细介绍了matplotlib.colors 和 matplotlib.cm模块。使用matplotlib.colors模块可以完成大多数常见的任务。似乎很少需要直接使用matplotlib.cm模块。我们继续使用上一篇最后的例子来看看 matplotlib 设计 matplotlib.cm模块的用途...

2020-04-06 16:23:40 45375 3

原创 Matplotlib 配色 之 Colormap 详解

Matplotlib 配色 之 Colormap 详解颜色映射,colormap概述上一篇详细介绍了 matplotlib 直接使用"格式化的颜色定义"给图表元素配色。如,直接指定 axes.plot 绘制的 Line2D 的颜色 fmt = 'r'。有时我们希望图表元素的颜色与数据集中某个变量的值相关,颜色随着该变量值的变化而变化,以反映数据变化趋势、数据的聚集、分析者对数据的理解等信息...

2020-03-31 17:20:53 38953 9

原创 Matplotlib配色功能详解01_基础篇

Matplotlib专题_配色,图表配色基础篇博文已很长时间没有更新,不是因为新冠疫情,而是因为老家有一块宅基地,想建一个度假草堂,当然要自己动手设计,就集中精力去研究了一下Chief Architecture,算是在Matplotlib探索的旅途中被路边的一朵小花分散了注意力!言归真传!当我们掌握了matplotlib绘图的基本流程,能够绘制一些简单的图表时,就会想要让自己的图表具有丰富的...

2020-03-23 11:31:37 2966

原创 Matplotlib学习手册A006_Figure的add_subplot()方法

Figure的add_subplot()方法本篇讨论Figure对象的另一个重要方法: add_subplot()。很多人会认为 add_subplot() 与 add_axes() 方法一样,都是向figure容器中添加axes子容器。如果你也是这样理解add_subplot()方法的,你就真的有必要认真看看本篇了。本篇将从4个方面来讨论:add_subplot()方法的调用;ad...

2019-11-23 12:15:53 27078 2

原创 Matplotlib学习手册A005_Figure的add_axes()方法

本篇将详细讨论Figure的add_axes()方法axes是figure容器中的一个格子figure对象是一个顶级容器,用来放置、布局子绘图组件,可以进一步将figure划分多个子区域,这就像一个文件柜被划分为多个格子或抽屉一样。Axes是Figure子容器中最重要的一个子容器。Axes是一个矩形区域,这个矩形是基于figure坐标系统定义的。Axes也是matplotlib框架中一个...

2019-11-23 12:10:41 10674

原创 Matplotlib学习手册A004_Figure对象方法全解

上一篇我们介绍了Figure对象,解析了Figure的调用和形参。本篇我们介绍Figure对象的属性和方法。matplotlib官方文档公开了Figure的2个属性,60个方法:2个属性是:**patch,**代表figure矩形区域的实例。**suppressComposite,**后端的图像合成设置,一般为None,使用渲染器的option_image_nocomposite函数。...

2019-11-23 12:03:41 907

原创 Matplotlib学习手册A003_Figure对象解析

专注于matplotlib的pyplot函数式绘图的人,可能会说:Figure有什么需要解析的,我一直使用“plt.figure()”就足够了,有时我甚至直接"plt.plot()"就行了。Figure对象有必要解析吗?Figure对象是matplotlib绘图的开始,它是连接后端的桥梁,它是绘图元素定位、布局的基础。一切可见元素皆是Artistmpl框架的artist模块中定义了一个抽象基...

2019-11-23 11:55:44 1231 1

原创 MPL学习手册A002_matplotlib对象概览和绘图流程

matplotlib 的架构设计matplotlib是一个Python包,包就是一个包含名为“init.py" 初始化文件的文件夹。matplotlib包下面还有一些子包,其中的 axes, backends 两个子包与我们关系最紧密。matplotlib包及其子包共提供了68个模块。在这些模块中提供了matplotlib绘图需要的全部对象。matplotlib常用对象matplotl...

2019-11-23 11:39:41 670 1

原创 MPL学习手册A001-matplotlib面向对象绘图快感初体验

本篇将:引入mpl面向对象绘图的几个重要概念和对象;采用纯面向对象的绘图方式绘制一个基本图形;与函数式绘图做一些简单比较;自定义一个figure类,实现图形基本格式的统一定制;提供一个有更多对象的示例供有兴趣者研究。matplotlib设计了两种绘图模式:pyplot模块的函数式绘图object-oriented的面向对象,简称OO。什么是mpl的对象?简单地说,mpl...

2019-11-23 11:31:33 1136 1

原创 11-数据可视化应该避免的误区

关于数据可视化概念的讨论文章很多,但为了高大上,多少都写得有点“专业、绕口”。我这样的草根认为,在学习、使用数据可视化前,都应该先问问:要可视化的是什么?数据可视化,简单地说就是用图表表达具有下述要素的信息:你从数据中理解到的、你认为有价值的、使用图形化手段能更清晰地表达和交流的。首先,你要通过图形表达的信息,应该是你从数据中理解到的。这里有两个关键点:这个信息必须是来源于数据...

2019-11-17 16:03:10 507

ReadExifApp.rar

纯 python 写的,批量读取照片的 Exif 信息(重点是GPS坐标)保存到 csv, xlsx 文件中的小程序,图形界面,操作简单。读取几千张照片,几分钟的事情。并且借鉴网友的算法尝试做了不同坐标系的转换。 下载压缩包,右键--解压到当前文件夹,在 ReadExifApp 文件夹中,双击 ReadExif_main.exe 即可启动小程序,免安装。使用方法参见 readme.md 文件。读取的信息保存为 .csv, .xlsx 文件。

2021-09-18

Mpl绘制心肌模型图方法二:Axes.bar_polar.rar

美国心脏协会(AHA)的左心室心脏分割模型,在医学界广泛使用该模型描述疾病对心肌区域和壁功能的影响。该模型图类似于靶心图、牛眼图、嵌套环形图、bullseye chart. 在 matplotlib 中常用 axes.pie,或 axes.bar + polar 坐标系绘制。axes.bar + polar 更加灵活。 本资源包含AHA心肌模型的元数据,axes.bar + polar 绘制模型图的完整代码,和高清成图。

2021-02-11

Mpl绘制心肌模型图方法一:Axes.pie.rar

美国心脏协会(AHA)发表了左心室心肌的分割和命名法,即心脏分割模型,现在医学界广泛使用该模型描述疾病对心肌区域和壁功能的影响。该模型图类似与靶心图、牛眼图、嵌套环形图、bullseye chart. 包含心肌模型的元数据,和使用 matplotlib 实现心肌模型图的完整代码、高清成图。

2021-02-10

matplotlib坐标变换详解_python草堂.ipynb

详细讲解了 matplotlib 坐标变换,对其主要坐标系统逐个结合示例进行了讨论,提供了完整的示例代码。

2021-01-23

marker 密度过大的两种处理方法

用`pyplot.plot`绘制的图形,开启 `marker`后,由于 points 密度太大, marker 堆叠在了一起,两种处理方法的比较,包括对markevery参数设置详细设置方法。完整的.ipynb文件,包含示例代码。

2021-01-09

完美的excel聚光灯模板

Excel 完美聚光灯(高亮行列)模板,用窗体设置、控制聚光灯。纯VBA实现。解决了此前一些方案的各种问题。不破坏撤销、重做功能,不覆盖原填充色,新建工作表无需重新设置,数据区改变无需重新设置。暂未发现问题。有问题欢迎反馈。

2020-09-18

完美的聚光灯_R2.xltm

使用VBA实现的 Excel 聚光灯,避免了破坏撤销、重做功能,避免了覆盖单元格原填充色,可以自定义高亮颜色,可以指定高亮底色或边框,也可以关闭高亮。

2020-09-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除