【发布时间】:2014-05-31 19:36:03
【问题描述】:
什么是 numpy 或 pandas 等效于 R 函数 sweep()?
详细说明:在 R 中,假设我们有一个系数向量,比如 beta(数字类型)和一个数组,比如 data(20x5 数字类型)。我想将向量叠加在数组的每一行上并乘以相应的元素。然后返回结果 (20x5) 数组,我可以使用 sweep() 来实现这一点。
等效样例R代码:
beta <- c(10, 20, 30, 40)
data <- array(1:20,c(5,4))
sweep(data,MARGIN=2,beta,`*`)
#---------------
> data
[,1] [,2] [,3] [,4]
[1,] 1 6 11 16
[2,] 2 7 12 17
[3,] 3 8 13 18
[4,] 4 9 14 19
[5,] 5 10 15 20
> beta
[1] 10 20 30 40
> sweep(data,MARGIN=2,beta,`*`)
[,1] [,2] [,3] [,4]
[1,] 10 120 330 640
[2,] 20 140 360 680
[3,] 30 160 390 720
[4,] 40 180 420 760
[5,] 50 200 450 800
我在 Python 中听说过关于 numpy 和 pandas 的令人兴奋的事情,而且它似乎有很多类似 R 的命令。使用这些库实现相同目标的最快方法是什么?实际数据有数百万行和大约 50 列。 beta 向量当然是符合数据的。
【问题讨论】:
-
由于一些知识渊博的 pandas 用户可能没有安装 R,因此可以通过显示
sweep的输入和输出来大大改善这个问题 -
这个保证金是多少?文档不清楚只是清扫(即
beta * data)之间有什么区别。 -
MARGIN表示是否对行上的列进行处理,MARGIN=2表示列,1表示行
-
如果数字不是随机的,则更容易看到发生了什么。因此我的编辑。
标签: python arrays r numpy pandas