Python编程道场的科学问题
我们正在巴西的Python社区组织一个关于科学应用的编码道场,主要目标是:提升我们在Numpy(以及其他一些科学库)方面的技能;提高在这类应用中使用测试驱动开发(TDD)的能力;更好地理解这些API的局限性。
我在寻找适合这些目标的问题(主要是使用Numpy)。有什么建议吗?
更新 1:
这是一个随机编码道场。
我们对特定领域没有偏好(主要是在不同领域工作),而且这是我们第一次举办“科学道场”,所以我们不太清楚什么样的问题最适合科学道场。
无论如何,这些问题必须比较简单,可能我们需要解释一下问题背后的理论,所以它们也不能太复杂(除非在特殊情况下)。举个例子:实现一个多元正态分布函数。
给未来的总结:
- 主成分分析(PCA),用于将一组数据投影到二维平面上。
- 使用维特比算法实现一个词性标注器。
- 使用高斯混合模型和EM算法对图片颜色进行量化(用scikit吗?)
- 模拟随机偏微分方程。
- 实现一个多元正态函数。
- ... 还有什么其他的? ...
4 个回答
你没有提到你在用什么代码练习资源,以及为什么这些资源不合适。
其实很多代码练习的内容都是很不错的,适合这种情况。
如果想为科学家们创建一个新的代码练习,你需要先想想哪些是常见的数据处理任务。你需要收集一些用户故事,这样才能设计出一个好的代码练习。
比如说,我和精算师一起工作时,常常需要花很多时间来阅读原始数据,进行筛选、清理、整理和总结。通常,我会在一个简短的Python程序中完成这些工作,使用CSV文件,写几个if语句,几个字典,最后再用一个打印循环输出结果。
通常情况下,我可以在一两个小时内搞定这样的程序,具体时间取决于任务的复杂程度和我需要写多少测试,以确保程序能正常运行。
你可以看看麻省理工学院的这节课。当年我在这里学到了一些新知识,也学会了如何使用Python。他们有一些简单的例子,展示了不同的内容,并介绍了计算的基本概念。
我觉得你应该尝试一些SciPy食谱中的例子,还有一些NumPy的例子。没有NumPy或SciPy,做科学计算几乎是不可能的。而且,像多元正态分布这样的功能,NumPy已经实现了,自己再去写一遍是浪费时间,也不高效。我建议你可以做一些像牛顿迭代法这样的计算,这种方法简单易编程,而且在Python中看起来也不错。此外,还有一本小书非常适合你的课程,内容是关于如何用Python进行科学计算。这本书涉及了NumPy、SciPy、Matplotlib以及其他对科学家很重要的例子。书中的内容很有用,不过我在谷歌上没找到。我会在我的小书库里帮你找找,但可能需要一些时间(它就在那儿,我知道)。
希望这些对你有帮助。
软件木工是一个为科学计算准备的学习资料,主要使用Python语言,并且里面有很多经过深思熟虑的示例问题。