Numpy将放弃Python 2.7,Python 2.7支持将于2020年1月1日终止

目前,Python 科学栈中的所有主要项目都同时支持 Python 3.x 和 Python 2.7,不过,这种情况很快即将结束。去年 11 月,Numpy 团队的一份声明引发了数据科学社区的关注:这一科学计算库即将放弃对于 Python 2.7 的支持,全面转向 Python 3。Numpy 并不是唯一宣称即将放弃 Python 旧版本支持的工具,pandas 与 Jupyter notebook 等很多产品也在即将放弃支持的名单之中。对于数据科学开发者而言,如何将已有项目从 Python 2 转向 Python 3 成为了正在面临的重大问题。来自莫斯科大学的 Alex Rogozhnikov 博士为我们整理了一份代码迁移指南。

Numpy将放弃Python 2.7,Python 2.7支持将于2020年1月1日终止

Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。Python 2 和 Python 3 长期共存于 Python 生态系统中,很多数据科学家仍然使用 Python 2。2019 年底,Numpy 等很多科学计算工具都将停止支持 Python 2,而 2018 年后 Numpy 的所有新功能版本将只支持 Python 3。

Python 2.7原计划在2015年终止支持,但由于大量代码没有移植到Python 3,Python语言作者Guido van Rossum将终止支持的时间推迟到了2020年。

Numpy将放弃Python 2.7,Python 2.7支持将于2020年1月1日终止

近日,该语言作者在邮件列表上宣布 Python 2.7将于2020年1月1日终止支持。用户如果想要在这个日期之后继续得到与Python 2.7有关的支持,则需要付费给商业供应商。

另外一提的是,2018年3月开始,我国教育部考试中心将实施2018版考试大纲,并按新体系开考各个考试级别。在新的考试大纲中,新增“Python语言程序设计”科目(代码:66),考试时长:120分钟,软件要求:Python 3.5.2版本及以上IDLE,2018年9月首次开考。

. Numpy、pandas、Jupyter notebook宣布将放弃支持Python 2.7,全面支持Python 3

最近,Numpy 团队的一份声明引发了数据科学社区的关注:这一科学计算库即将放弃对 Python 2.7 的支持,全面转向 Python 3。由于目前存在很多基于 Numpy 的深度学习依赖库,该决定意味着所有在此之上的工具都将失去对于 Python 2.7 的支持。Numpy 并不是唯一宣称即将放弃 Python 旧版本支持的工具,经开发者整理发现,pandas 与 Jupyter notebook 也在即将放弃支持的名单之中。

Numpy将放弃Python 2.7,Python 2.7支持将于2020年1月1日终止

下列代码是一个简单示例,可以处理不同类型的数据(这就是我们喜欢 Python 数据栈之处)。

  1. def repeat_each_entry(data):

  2. """ Each entry in the data is doubled

  3. <blah blah nobody reads the documentation till the end>

  4. """

  5. index = numpy.repeat(numpy.arange(len(data)), 2)

  6. return data[index]

上述代码适用于 numpy.array(包括多维)、astropy.Table 和 astropy.Column、bcolz、cupy、mxnet.ndarray 等。

该代码同样可用于 pandas.Series,但是方式是错误的:

  1. repeat_each_entry(pandas.Series(data=[0, 1, 2], index=[3, 4, 5])) # returns Series with Nones inside

这是一个两行代码。想象一下复杂系统的行为多么难预测,有时一个函数就可能导致错误的行为。明确了解哪些类型方法适合大型系统很有帮助,它会在函数未得到此类参数时给出提醒。

Numpy将放弃Python 2.7,Python 2.7支持将于2020年1月1日终止

  1. def repeat_each_entry(data: Union[numpy.ndarray, bcolz.carray]):

如果你有一个很棒的代码库,类型提示工具如 MyPy 可能成为集成流程中的一部分。不幸的是,提示没有强大到足以为 ndarrays/tensors 提供细粒度类型,但是或许我们很快就可以拥有这样的提示工具了,这将是 DS 的伟大功能。

相关推荐