【每周一坑】生成九宫格图片

我们的每N周一坑栏目又来了。

之前我们有过和图像处理相关的题目:
【每周一坑】用代码给图片配上文字
【每周一坑】缩小图片尺寸

今天再来一个和图片有关的:图片切割

非常简单的功能,但在开发中很常见,很多网页/应用里缩略图都是对图片进行缩放+切割得到的。

增加一点点趣味性,我们的要求是:

把一张图片切成 3 x 3 九张小图

这样就可以把它们发在朋友圈重新组成一张大图了。

示例:
原图

效果

当然,原图是正方形效果最好。

附加题

  1. 对于不是正方形的原图,截取中间尽可能大的正方形区域,再分割成九张小图(需考虑长>宽和长<宽两种情况)

  2. 切图时将朋友圈小图之间的间隔考虑进去,使拼接出的大图看起来更连续

提示:仍然用之前提到过的 PIL 库,里面的 crop 方法即可实现(py3 安装包名为 pillow)。

参考代码将在下周给出,或看看其他同学在留言中提交的代码。

期待各位同学提交解答。

提交代码可以使用 paste.ubuntu.com 或 

codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。

往期问题可通过公众号菜单栏“课外辅导”栏目中进入查看。


【解答】蜥蜴流感与贝叶斯定理

案例本身是一个典型的条件概率,用贝叶斯定理即可算出概率,概率统计的书籍和网上都可以搜到详细解释。

P = (0.01 * 0.9) / (0.01 * 0.9 + (1 - 0.01) * 0.09)
= 0.0917

而我们的问题是要模拟这个场景。所以我们可以循环10万次,用 random 模块根据已知的概率来“产生”病例和阳性结果,并统计最终实际的阳性患病率。

给出一份参考代码:

import random
# 定义个体
class Man:    flu = False #是否患病
   test = False #是否阳性
# 产生10万个体,随机患病和检测状况
all_people = []
for i in range(100000):    m = Man()
   # 患病概率
   if random.random() < 0.01:        m.flu = True
   # 真阳性概率
   if m.flu and random.random() < 0.9:        m.test = True
   # 假阳性概率
   if not m.flu and random.random() < 0.09:        m.test = True    all_people.append(m)
# 统计个数
positive_people = [m for m in all_people if m.test] print(len(positive_people)) positive_flu = [m for m in positive_people if m.flu] print(len(positive_flu))
# 实际患病者在阳性者中的比例
print(len(positive_flu)/len(positive_people))

这里先模拟生成了10万份数据,然后统计结果。当然也可以边生成边统计,@Mr. wang、@铭记、@L、@杀哥 就是用的类似方法,有的写得比我还更简洁。

同时提交解答的还有 @Jzy、@灿夜、@冬日炎炎。感谢各位同学的参与,希望下次继续。

期待在下一期中看到你的代码!

(0)

相关推荐

  • 如果只写一行代码能实现什么?看完我彻底服了

    来源:Python 技术「ID: pythonall」 人生苦短,我用 Python.这句话大家应该相当熟悉了吧,那 Python 到底有多简单呢,今天就来带大家看看,如果只写一行代码,Python ...

  • 分类模型评估指标

    对于构建好的机器学习模型,需要对模型的效果进行评估,对于机器学习中的3大类问题,分类,回归,聚类而言,各自有不同的评估指标,本文主要介绍分类模型常用的评估指标. 以二分类问题为例,考虑真实分类和模型预 ...

  • python笔记50-面试题:交换圣诞节礼物

    前言 圣诞节快到啦,为了打造良好的工作环境,同事之间的关系和谐,现在玩一个交换礼物的小游戏. 每个同事准备一个礼物,到时候互相交换,自己手里的礼物必须交换出去,并且得到一个其它人的礼物. 交换礼物 我 ...

  • Book思议!老外爱屯卫生纸竟是这个原因!!

    老外爱屯纸竟是这个原因!! 抗击疫情,封城宅家.这些操作让我们不得不准备好在家的必须用品.口罩,酒精,方便面,还有粮食等,都在我们外出扫货的必备清单上.不过自从外国疫情开始,到现在的大规模爆发,老外们 ...

  • 【每周一坑】缩小图片尺寸

    之前我们的题目大多偏向解决数学问题,今天来一道偏应用的: 我们知道,通常来说一张图片的分辨率越高,它就越清晰,但文件占用的空间就越大.有时候我们并不需要那么高的清晰度,而是希望图片占用空间可以小一些. ...

  • 【每周一坑】暴力计算圆周率 +【解答】生成/识别二维码

    我们之前有出过一些和概率相关的问题.比如 几道有趣的概率题.三门问题.田忌赛马.蜥蜴流感与贝叶斯定理.我讲过,用计算机程序来解编程题有个很有意思的思路,就是暴力解法.就是利用电脑的计算能力,去模拟大量 ...

  • 【每周一坑】生成/识别二维码 +【解答】新个税计算器

    二维码的本质是将文本信息转化成符合一定格式的平面图片信息,以便于计算机/手机通过摄像头或扫码设备快速而准确地识别,实现信息的传递.从某种角度来说,二维码可算是打通次元壁的途径,将互联网与现实世界更便捷 ...

  • 【每周一坑】用代码给图片配上文字

    我们的『每日一坑』栏目里都是一些练手的小题目,难度不高,适合新手用来熟悉编程.如果想要更复杂的大项目,可以上我们的实验室栏目 lab.crossincode.com 上查看,或者论坛 bbs.cros ...

  • 【每周一坑】神奇的九宫格

    五一小长假大家应该玩的挺开心吧,还沉浸在假日的愉悦中么?请大家收收心,准备准备月底的端午节. 看看本周的题目吧,本周的题目由读者 @疯琴 提供,我们做了小小的改进,题目为数字填充 9 宫格. 给定一个 ...

  • 捷径|一键生成朋友圈文字九宫格图片!

    编注:捷径系列主要面向正在使用苹果生态iPhone.iPad.iPod设备的朋友,分享网络最热最实用的快捷指令(捷径)资源,帮你更高效的完成一些事情. 今天给大家分享捷径资源:一键生成文字九宫格捷径, ...

  • 一键生成微博微信九宫格图片捷径!

    编注:「捷径」系列主要面向正在使用苹果iPhone.iPad设备的朋友,内容为网络最热最实用的快捷指令(捷径)资源,帮助大家更高效的完成一些事情. 今天给大家分享的捷径资源是一键生成微博微信九宫格图片 ...

  • 菜鸟记289-如何将图片裁剪成九宫格图片?

    万一您身边的朋友正好用得着呢? 关键词:ZhuoMiCutPictureX9软件:一个木函:裁剪图片:操作难度*** 郑重声明:本文仅为传递更多信息,小菜没有从所介绍的软件中获得任何利益,本人不承担您 ...