python - Python中是否有等效于R的应用函数?
问题描述
我试图找到与 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
我发现sum
numpy中的函数是可以使用的,但是方式不一样:
例如:
import numpy as np
xx= np.ones((2,3,4))
np.sum(xx,axis=(1,2))
结果是:
array([12., 12.])
但apply
在处理margin=c(1,2)
. 有人可以帮忙吗?
解决方案
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 更复杂。
推荐阅读
- javascript - 解构具有附加属性的项目
- php - JWT Laravel 修改密码机制
- node.js - User.findOne 返回 null
- python - ValueError:从数据帧中提取 X 和 Y 时,代码需要是类似数组的整数
- assembly - 我可以将 CPU 中的寄存器用作堆栈机器的“堆栈顶部”吗?
- node.js - FindOneAndUpdate MongoDB 与 Mongoose 更新用户的个人资料不使用电子邮件?
- pandas - 我正在尝试合并两个具有几个相同值但它给出一个空集的 DataFrame?
- javascript - 为什么删除按钮停止作用于通过函数创建的元素?| Javascript & HML
- php - 在没有数据库的情况下使用 Symfony 实体和原则映射
- python - tkinter 图像的操作:为什么在将图片放置在画布上之前对其进行操作时,它的运行速度会快 10 倍以上?