Python 基本功
frank909
爱阅读的程序员,专注于技术思考和分享。关注架构设计、Android 开发、AI、数学、自动驾驶领域,个人公号:Frankcall
展开
-
Python多线程编程(一):threading 模块 Thread 类的用法详解
我们进行程序开发的时候,肯定避免不了要处理并发的情况。一般并发的手段有采用多进程和多线程。但线程比进程更轻量化,系统开销一般也更低,所以大家更倾向于用多线程的方式处理并发的情况。Python 提供多线程编程的方式。本文基于 Python3 讲解,Python 实现多线程编程需要借助于 threading 模块。所以,我们要在代码中引用它。import threadingthread...原创 2018-12-19 16:54:45 · 256910 阅读 · 51 评论 -
如何通过 Matplotlib 绘制动画及保存 GIF 图片?
在自学机器学习或者是深度学习的过程中,有的时候总想把执行过程或者执行结果显示出来,所以就想到了动画。好在用 Python 实现动画有许多中方式,而大家熟知的 Matplotlib 库就可以实现。本文的目的是对 Matplotlib 的动画实现手段做一个简单的说明。绘制动画import matplotlib.pyplot as pltimport matplotlib.animation a...原创 2018-12-10 15:41:32 · 38728 阅读 · 5 评论 -
Python 多线程编程(二):threading 模块中 Lock 类的用法详解
在前面一篇博文《Python多线程编程(一):threading 模块 Thread 类的用法详解 》 我有简单介绍怎么利用 threading 模块进行多线程的编码。但那只是多线程编码最简单的部分,真正难的其实是多个线程之间的通信和数据同步。大概可以这样讲,多线程最难的是如何正确协调各个线程修改同一份数据。以卖票的例子作为说明。买票有多个窗口,假设有 3 个好了,窗口之间共享一个票池,每...原创 2018-12-23 10:21:55 · 33560 阅读 · 13 评论 -
【小算法】选择排序
选择排序是一种非常容易理解的算法。算法思路假设有下面一组数据,需要从小到大升序排列。选择排序的算法是1. 创建一个列表或者数组2. 第一次遍历数组,找出最小的一个数存放在新的数组中。3. 第二次遍历数组,找出次小的数存放在新的数组。4. 重复类似操作,直到所有的数据排列完成图例示意:Python 代码演示:def sort(srcArr): dstArr = ...原创 2019-08-06 11:49:48 · 1509 阅读 · 3 评论 -
【小算法】快速排序
快速排序是一种运用非常广的算法,但不是那么好理解。假设有下面一组数据,需要从小到大升序排列。快速排序的算法是1. 确定不用排序的条件2. 确定每次排序时,选择排序的基准值(pivot)3. 排序依据,将当前数组中,所有比 pivot 大的数值存放到新的数组 right 挪到右边,所有比 pivot 小的数值存放到一个新的数组 left 挪到左边,然后一起拼接起来。4. 利用递归思想,调...原创 2019-08-15 15:21:34 · 1889 阅读 · 2 评论 -
【小算法】冒泡排序
冒泡排序是大多学人学到的第一个排序,教科书上在众多的排序算法中选择它作为示例,我想还是因为它够简单,易于理解吧。假设有下面一组数据,需要从小到大升序排列。冒泡排序的算法是1. 从左到右,依次比较相邻两个位置的数据,如果左边的数值较大,就交换它们,这样在单轮操作中,最大的数会交换到最右边。2. 重复多轮操作,重复的次数和数组的长度相同。3. 排序完成。冒泡排序的过核心思想就是 交换。...原创 2019-08-26 20:32:32 · 1408 阅读 · 0 评论 -
【小算法】插入排序
插入排序也是一种非常容易理解的算法,核心思想就是每次将新的元素往原本有序的数组中插入。算法思路假设有下面一组数据,需要从小到大升序排列。插入排序的算法是1. 进行多轮迭代。2. 每一次迭代的前提是将当前的数值插入到前面已经排序好的子数组当中。也许描述有写抽象,但用显示当中玩扑克牌的经验可以很好地类比插入排序。比如你手里已经有一堆牌。5、6、J、K如果你再抓到一张 9,那...原创 2019-08-29 16:34:36 · 1874 阅读 · 0 评论 -
用Pytorch自建6层神经网络训练Fashion-MNIST数据集,测试准确率达到 92%
一般的深度学习入门例子是 MNIST 的训练和测试,几乎就算是深度学习领域的 HELLO WORLD 了,但是,有一个问题是,MNIST 太简单了,初学者闭着眼镜随便构造几层网络就可以将准确率提升到 90% 以上。但是,初学者这算入门了吗?答案是没有。现实开发当中的例子可没有这么简单,如果让初学者直接去上手 VOC 或者是 COCO 这样的数据集,很可能自己搭建的神经网络准确率不超过 30%。...原创 2019-09-10 15:32:01 · 16371 阅读 · 17 评论