这里有长期的R和Python用户.我使用R进行日常数据分析,使用Python进行文本处理和shell脚本更重的任务.我正在处理越来越大的数据集,当我得到它们时,这些文件通常是二进制文件或文本文件.我通常做的事情类型是在大多数情况下应用统计/机器学习算法并创建统计图形.我有时使用R和SQLite,并为迭代密集型任务编写C语言; 在研究Hadoop之前,我正在考虑在NumPy/Scipy上投入一些时间,因为我听说它有更好的内存管理[并且我的背景转换为Numpy/Scipy看起来并不那么大] - 我想知道是否有人有经验使用这两个,并可以评论这方面的改进,如果Numpy中有成语来处理这个问题.(一世' 我也知道Rpy2,但想知道Numpy/Scipy能否满足我的大部分需求).谢谢 -
我每天都使用NumPy而R几乎是这样.
对于重数字运算,我更喜欢NumPy到R(包括R包,比如'Matrix')我发现语法更清晰,函数设置更大,计算更快(尽管我没有发现任何R慢手段).例如,NumPy的广播功能,我认为在R.中没有模拟
例如,要从csv文件读取数据集并"标准化"它以输入到ML算法(例如,平均中心然后重新缩放每个维度),只需要:
data = NP.loadtxt(data1, delimiter=",") # 'data' is a NumPy array data -= NP.mean(data, axis=0) data /= NP.max(data, axis=0)
此外,我发现在编码ML算法时,我需要数据结构,我可以在元素上操作,也理解线性代数(例如,矩阵乘法,转置等).NumPy得到了这个,并允许您轻松创建这些混合结构(没有运算符重载或子类化等).
你不会对NumPy/SciPy感到失望,更有可能你会感到惊讶.
所以,一些建议 - 一般而言,特别是考虑到你问题中的事实:
同时安装NumPy和Scipy.作为一个粗略的指南,NumPy提供核心数据结构(特别是ndarray)和SciPy(实际上比NumPy大几倍)提供特定于域的功能(例如,统计,信号处理,集成).
安装存储库版本,特别是w/r/t NumPy,因为开发版本是2.0.Matplotlib和NumPy是紧密集成的,当然你可以使用其中一个,但两者都是python库中各自类中最好的.您可以通过easy_install获取所有这三个,我假设您已经.
NumPy/SciPy有几个 专门针对机器学习/统计的模块,包括Clustering包和Statistics包.
以及针对一般计算的包,但是使编码ML算法快得多,特别是 优化和线性代数.
也存在SciKit小号,不包含在基本NumPy的或SciPy的文库; 你需要单独安装它们.一般来说,每个SciKit都是一组便利包装器,用于简化给定域中的编码.您可能发现最相关的SciKits是:ann(近似最近邻)和学习(一组ML /统计回归和分类算法,例如Logistic回归,多层感知器,支持向量机).
R在寻找机器学习和统计环境时的优势当然是其图书馆的多样性.据我所知,SciPy + SciKits不能替代CRAN.
关于内存使用,R使用pass-by-value范例,而Python使用pass-by-reference.按值传递可以产生更"直观"的代码,传递引用可以帮助优化内存使用.Numpy还允许在数组上有"视图"(没有复制的子数组).
关于速度,纯Python比纯R更快地访问数组中的单个元素,但是当处理numpy数组(基准)时,这种优势消失了.幸运的是,Cython让人们可以轻松地获得严重的速度提升.
如果使用Big Data,我会发现使用Python(HDF5)可以更好地支持基于存储的数组.
我不确定你应该抛弃另一个但是rpy2可以帮助你探索关于可能转换的选项(数组可以在R和Numpy之间穿梭而不需要复制).