首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R与Python矢量化与优化的比较

R与Python矢量化与优化的比较
EN

Stack Overflow用户
提问于 2021-10-08 15:27:14
回答 1查看 261关注 0票数 0

R语言中,可以通过使用purrr::map()furrr::future_map()函数来实现优化。但是,我不知道np.array()方法是如何进行优化的。实际上,我想了解PythonR在复杂性和性能方面如何扩展到并行处理1、2。

因此,出现了以下问题:

np.array()Python中的优化与R语言中的purrr::map()furrr::future_map()函数相比是如何工作的?

通过在purrr/furrr上进行简单的purrr/furrr测试,我可以看到,在这两种情况下,向量化都取得了很大的成功。尽管如此,我还可以注意到,结果似乎表明,R语言从根本上说是更快的。

Python

代码语言:javascript
复制
import time

a = np.random.rand(1000000)
b = np.random.rand(1000000)

tic = time.time()
c = np.dot(a,b)
toc = time.time()

print ("Vectorized version:" + str(1000*(toc-tic)) +"ms")

c = 0
tic = time.time()
for i in range(1000000):
  c += a[i]*b[i]
toc = time.time()

print("For loop:" + str(1000*(toc-tic)) +"ms")

输出

矢量化版本: 54.151296615600586ms

循环 676.0082244873047ms

R

代码语言:javascript
复制
a <- runif(1000000,0,1)
b <- runif(1000000,0,1)

c = 0
tictoc::tic()
c = sum(a * b)
tictoc::toc()

c = 0
tictoc::tic()
  for (i in 1:length(a)) {
    c = a[i]*b[i] + c
  }
tictoc::toc()

输出

矢量化版本: 0.013秒

For循环:经过0.065秒

参考文献

1 Ross Ihaka & Robert Gentleman (1996) R:用于数据分析和图形学的语言,计算和图形统计杂志,5:3,299-314,DOI:10.1080/10618600.1996

2 S. van der Walt,S. C. Colbert和G. Varoquaux,“NumPy阵列:有效数值计算的结构”,载于“科学与工程中的计算”,第13卷,第2期,第22-30页,2011年3月至4月,doi:10.1109/MCSE.2011.37

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-15 19:40:12

我相信numpy将它的一些“原始”对象封装在包装类中,这些类本身就是Python (例如。 1)。当查看R镜像源代码时,我反过来发现了一个基本上是本机代码(又名C)的数组类。我想,仅仅是这个额外的间接层就可以解释速度的差异。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69498290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档