在Python中是否有与R apply函数等效的函数?

时间:2019-04-28 12:17:37

标签: python r multidimensional-array

我试图找到与R的apply函数等效但具有多维数组的Python

例如,当调用以下代码时:

z <- array(1, dim = 2:4)
apply(z, 1, sum)

结果是:

[1] 12 12

,并在使用两个保证金值调用时:

apply(z, c(1,2), sum)

结果是:

     [,1] [,2] [,3]
[1,]    4    4    4
[2,]    4    4    4

我发现numpy中的函数sum可以使用,但不能以相同的一致方式使用:

例如:

xx= np.ones((2,3,4))
np.sum(xx,axis=(1,2))

结果是:

array([12., 12.])

但是我找不到以其方式应用的等效函数 特别是在处理margin = c(1,2)时 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:4)

NumPy中的等效项是:

xx.sum(axis=2)

也就是说,您要对第2轴(最后一个尺寸)求和,其长度为4,剩下的两个尺寸(2,3)作为结果的形状:

array([[4., 4., 4.],
       [4., 4., 4.]])

也许您的R代码的字面翻译可能是:

np.apply_over_axes(np.sum, xx, 2)

给出相似结果但转置。但是,这可能会比较慢,并且不是惯用语言,除非您要执行的实际操作比sum复杂。