- 博客(13)
- 问答 (1)
- 收藏
- 关注
原创 Python综合应用:手把手教你用字符打印一张怀旧风格的照片
第一次在学校机房里见到计算机,还是上古时期。计算机型号大概是LASER-310吧,有点记不清了。那会儿,显示器还是单色的,只能显示文本,每行最多显示80个字符。想看图片,印象中只能用针式打印机打印在两侧穿孔的宽行打印纸上,每个像素用一个字符表示,不同的字符代表不同的灰度,就像下图这个样子。有没有感觉到浓郁古风呢?其实,随便一张照片,十几行Python代码,你也可以打印出这样的效果,还可以保存成文件。下面,我就一步一步地演示一下。
2019-12-30 16:09:34 18095 27
原创 我的圣经:17年前的那本《Python 2.1 宝典》
办公室里有一个小小的书橱,摆放着我平时经常翻看的图书。但有一本书例外,一直放在那里,很多年都没有动过,书名叫做《Python 2.1 宝典》,译自美国计算机Bible丛书《Python 2.1 Bible》。今天是圣诞节。在这个特殊的日子里谈论《Python 2.1 Bible》,纯粹是巧合。Bible,直译为圣经,但这本《Python 2.1 Bible》的中文名字译作《Python 2.1 宝典》,我觉得倒是更贴切一点。
2019-12-25 16:38:38 10688
原创 NumPy入门讲座(5):实战演练
前面已经说过,广播和矢量化是 NumPy 最精髓特性,是 NumPy 的灵魂。所谓广播,就是将对数组的操作映射到每个数组元素上;矢量化可以理解为代码中没有显式的循环、索引等。如果用循环结构遍历 NumPy 数组,明显不符合 NumPy 的思想。可以说,使用 Numpy 的最高境界就是避免使用循环。如果代码中存在遍历 NumPy 数组的结构,就不是好的代码,就一定有优化空间。
2019-12-22 16:23:02 11018 6
原创 NumPy入门讲座(4):常用函数
NumPy 用特殊值来表示缺值、空值和无效值。想一想,Python 和 C 语言如何表示数组中的缺值、空值和无效值呢?Python 因为数组元素不受类型限制,可以用 None 或者 False 等表示缺值、空值和无效值。对 C 语言来说,恐怕也只能在数据的值域范围之外,选一个特定值来表示吧?比如,假定数组存储的是学生的成绩,成绩一般都是正值,所以C语言可以用-1表示缺考。在NumPy数组中,因为有了nan和inf这两个特殊值,我们就不用在意数据的值域范围了。
2019-12-19 09:43:16 10355
原创 NumPy入门讲座(3):操作数组
NumPy 数组对象的内容可以通过索引或切片来访问和修改。对于一维数组的索引和切片,NumPy 数组和Python 的列表一样灵活。对于多维数组操作,NumPy 数组比 Python 的列表更加灵活、强大。假设有一栋2层楼,每层楼内的房间都是3行4列,那我们可以用一个三维数组来保存每个房间的居住人数(当然,也可以是房间面积等其他数值信息)。
2019-12-18 17:36:54 9901 2
原创 NumPy入门讲座(2):创建数组
一般情况下,科学数据都是海量的、层次关系复杂的,是由数据服务机构提供的,不是我们构造出来的。我们创建数组的目的,很多时候是用来做原型验证和算法验证的。NumPy 为创建数组提供了非常丰富的手段,可以无中生有,可以移花接木,还可以举一反三。配合数据类型设置、结构设置,就可以构造出我们想要的任何形式的数组了。
2019-12-18 10:45:56 10496 3
原创 NumPy入门讲座(1):基本概念
NumPy 是 Python 科学计算的基础软件包,提供多了维数组对象,多种派生对象(掩码数组、矩阵等)以及用于快速操作数组的函数及 API,它包括数学、逻辑、数组形状变换、排序、选择、I/O 、离散傅立叶变换、基本线性代数、基本统计运算、随机模拟等等。
2019-12-17 12:02:14 12748 9
原创 剑客之剑系列续篇:六脉神剑——PyCharm使用宝典
前些日子,我在CSDN博客平台上以《剑客之剑》作为系列篇名,一口气分享了三款编辑器的使用体验。这篇三文章分别是:《剑客之剑——君子剑(Notepad++)》、《剑客之剑——倚天剑(Vim)》和《剑客之剑——玄铁重剑(VS Code)》。原计划 PyCharm 是《剑客之剑》系列的第四篇,本想一鼓作气写完的,无奈因短时间内发力过猛,气血不足,无以为继,只好先闭关修炼了两周。今日出关,终于可以继续聊聊PyCharm了。
2019-12-11 17:38:45 12201 7
原创 手把手教你用 tornado 设计 web 项目
全栈工程师,源出于 Full Stack Developer,更准确的翻译应该全栈开发者,是指掌握多种技能、并能利用多种技能独立完成产品的人。据说,配得上这个称号的人不多,Linux 之父雷纳斯(Linus Torvald,简称老雷)算是其中之一,JavaScript 宗师道格拉斯(Douglas Crockford,简称老道)也位列其中。看到他们二位,你是否还有信心成为一名全栈工程师呢?
2019-12-10 18:25:11 10282 4
原创 Python 进阶必备:图像库 pillow
PIL 是 Python Imaging Library 的简写,意为 Python 图像库。它不是 Python 的标准库,但在很长一段时期内,PIL 几乎就是 Python 的御用图像库。印象中大约是2015年前后(网上检索不到这一段历史),PIL 不再有更新,取而代之的,则是 PIL 的嫡传分支 pillow —— 完全继承了 PIL 的 API,且支持 py3 的图像库。尽管我们在提到图像处理时经常会提到 PIL,但一般情况下是指 pillow。pillow 的官网写着:If you have ev
2019-12-05 21:53:35 10411 5
原创 Python 进阶必备:进程模块 multiprocessing
multiprocessing 是 Python 内置的标准进程模块,可运行于 Unix 和 Windows 平台台上。依赖于该模块,程序员得以充分利用机器上的多核资源。为便于使用,multiprocessing 模块提供了和 threading 线程模块相似 API。针对进程特点,multiprocessing 模块还引入了在 threading 模块中没有的API,比如进程池(Pool)、共享内存(Array 和 Value)等。
2019-12-03 16:30:18 9388 2
原创 仅用7行Python代码,完美演绎MapReduce并行运算编程模型
MapReduce 是一种用于大规模数据集的并行运算编程模型,分为 Map(映射)和 Reduce(归约)两个步骤。Py2 时代,map() 和 reduce() 都是标准函数。不知为何,Py3 把 reduce() 藏到了标准模块 functools 中,只保留了 map() 在标准函数库中。借助于 Python 的标准进程模块(不熟悉进程模块的读者,可先阅读文后的两段参考资料),以及map() 和 reduce() 函数,我们可以非常容易地搭建一个 MapReduce 框架。
2019-12-03 16:01:09 14605 1
原创 Python 新手入门必学十大模块之三:math 和 random
math 和 random 是 Python 标准库中常用的两个和数学相关的库。math 模块实现了很多对浮点数的数学运算函数——这些函数一般是对平台 C 库中同名函数的简单封装。random 模块提供了一组随机函数,可以生成随机浮点数、整数、字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据等。
2019-12-03 09:56:59 9876 13
ScreenToClient cannot work when toplevel window is not shown
2022-11-18
为什么CSDN的bug一直无人修复呢?
2021-05-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人