R和Python,哪个对数据科学初学者更友好?

编者按:数据科学家alan marazzi这篇讨论r和python哪个对数据科学初学者更友好的文章有些偏向r语言,结论仅供参考。不过,它出色地展示了r语言在数据问题上犀利的表达力。对初学者而言,从高层抽象(由r语言中的原生结构或numpy之类的python第三方库提供)入手也确实更加便利。
这不是你通常在网上看到的那类争论r和python哪个好的帖子。事实上,我根本不想讨论到底哪个好。我只想说明,想要入门数据科学的学习者,从r开始更合适。
向量
什么是向量?如果你知道矩阵,那你就知道向量。向量可以看成矩阵的行或列,也就是由数字组成的一维“列表”。通常向量用作数据表的列,因为我们确信同一列内的数据类型相同。
浮点数、整数、字符串、类别,等等,向量中的元素总是属于同一类型。这很重要,因为我们可以利用这一点加速和简化代码:解释器只需检查第一项记录的类型。你也许已经知道,向量是r的原生结构,事实上,r中标量也是向量(一维向量)。
vec >> [5, 3, 4] * 2
[5, 3, 4, 5, 3, 4]
搞什么……
在python中要得到同样的结果,你需要使用for循环:
>>> for num in [5, 3, 4]:
... num * 2
...
10
6
8
你可能需要把结果存储到另一个列表中,所以你需要首先初始化一个空列表来存放结果,然后启动循环,在每个迭代中添加结果:
>>> res = []
>>> for num in [5, 3, 4]:
... res.append(num * 2)
...
>>> print(res)
[10, 6, 8]
在r中,你只需:
vec >> import random # 需要引入random模块
>>> def random_walk(n):
... position = 0# 初始化位置变量
... walk = [position] # 初始化列表
... for i in range(n):
... position += 2*random.randint(0, 1)-1# 更新位置值
... walk.append(position) # 附加结果至行走列表
... return walk
...
如果对象非常大,上面的代码会变得很慢,我们可以使用itertools模块改善性能:
>>> from itertools import accumulate
>>> import random
>>> def random_walk_faster(n=1000):
... steps = random.sample([1, -1]*n, n)
... return list(accumulate(steps))
...
不过,这还是没有向量化。它不过是更高效的循环而已。要做到完全向量化,我们需要使用numpy:
>>> import numpy as np
>>> def random_walk_fastest(n=1000):
... steps = 2*np.random.randint(0, 2, size=n) - 1
... return np.cumsum(steps)
...
换成r语言:
rw <- cumsum(sample(c(-1, 1), 1000, true))
无需引入什么模块,无需额外定义什么函数或方法,一行搞定。(译者注:python确实需要引入numpy,但其实也不用额外定义函数,np.cumsum(np.random.randint(...)))。
结语
如果你想从事和数据打交道的工作,或者想要教别人如何处理数据,可以从r开始。熟练使用r之后,再开始学python比较好。

区块链将改善下一代云服务的核心功能
解决可穿戴设备续航问题,妙招知多少
2020年Intel、AMD股价走势相差甚远
长江存储 64 层 3D NAND 打入华为 Mate 40 供应链
什么是放大器建立时间参数仿真
R和Python,哪个对数据科学初学者更友好?
常见的几种日期对象用法
性能全面超越卤素、氙气灯,汽车大灯LED革命来临!
这三个核心模块,所有的智能门禁系统都得有
碧斯特远程定时开关按键怎么使用
中国空间站预计2022年前后建成
中国可穿戴设备市场二季度出现回暖,同比增长17.3%
【RA2L1开发实践】- 温湿度检测平台
新型机器人学会写字 还会画简版《蒙娜丽莎》
UTC推出5.5寸光学感应器,兼容军用民用无人机
工业平板定制_基于MT6762核心板的三防工业平板电脑方案
ios10.3最新消息:苹果ios10.3支持ios10.4操作系统,ios10.3自曝神秘新功能,还不赶快升级?
关于封装技术的发展和应用分析
索尼官宣Xperia新机将于2月24日发布 并将以线上发布会形式发布
智能锁有哪些优势?先来看看豪力士智能锁的六大优势