Ema*_*ail 3 python numpy r multidimensional-array
我试图找到与 Rapply函数等效但具有多维数组的 Python 。
例如,当调用以下代码时:
z <- array(1, dim = 2:4)
apply(z, 1, sum)
Run Code Online (Sandbox Code Playgroud)
结果是:
[1] 12 12
Run Code Online (Sandbox Code Playgroud)
当使用两个保证金值调用时:
apply(z, c(1,2), sum)
Run Code Online (Sandbox Code Playgroud)
结果是:
[,1] [,2] [,3]
[1,] 4 4 4
[2,] 4 4 4
Run Code Online (Sandbox Code Playgroud)
我发现sum可以使用 numpy中的函数,但不是以相同的一致方式:
例如:
import numpy as np
xx= np.ones((2,3,4))
np.sum(xx,axis=(1,2))
Run Code Online (Sandbox Code Playgroud)
结果是:
array([12., 12.])
Run Code Online (Sandbox Code Playgroud)
但是apply在处理margin=c(1,2). 有人可以帮忙吗?
NumPy 中的等价物是:
xx.sum(axis=2)
Run Code Online (Sandbox Code Playgroud)
也就是说,您正在对轴 2(最后一个维度)求和,其长度为 4,将其他两个维度 (2,3) 作为结果的形状:
array([[4., 4., 4.],
[4., 4., 4.]])
Run Code Online (Sandbox Code Playgroud)
也许你的 R 代码更直接的翻译是:
np.apply_over_axes(np.sum, xx, 2)
Run Code Online (Sandbox Code Playgroud)
这给出了类似的结果,但转置了。然而,这可能会更慢,并且不是惯用的,除非您正在执行的实际操作比 sum 更复杂。
| 归档时间: |
|
| 查看次数: |
893 次 |
| 最近记录: |