在R语言中,可以通过使用purrr::map()或furrr::future_map()函数来实现优化。但是,我不知道np.array()方法是如何进行优化的。实际上,我想了解Python和R在复杂性和性能方面如何扩展到并行处理1、2。
因此,出现了以下问题:
np.array()在Python中的优化与R语言中的purrr::map()和furrr::future_map()函数相比是如何工作的?
通过在purrr/furrr上进行简单的purrr/furrr测试,我可以看到,在这两种情况下,向量化都取得了很大的成功。尽管如此,我还可以注意到,结果似乎表明,R语言从根本上说是更快的。
Python
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
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。
https://stackoverflow.com/questions/69498290
复制相似问题