我有以下Python代码:
n = 3
m = 2
y = np.random.normal(loc = 0, scale = 1, size = (n, m))
y_diff = np.expand_dims(y, 1) - np.expand_dims(y, 0)
我想将其转换为R。据我所知,它创建了一个$nxnxm$数组,其中$y_I-y_j$作为值
我找到了一种将expand_dims从python转换为R的方法(请参见:Translating Python np.expand_dims to R)
现在在R中有以下代码:
m = 2
n = 3
x = array(rnorm(m*n),c(m,n))
以下两行似乎都起作用:
expand_dims(x,1)
expand_dims(x,2)
但不是:
expand_dims(x,2) - expand_dims(x,1)
该报告:
Error in expand_dims(x, 2) - expand_dims(x, 1) : non-conformable arrays
我的直觉是,Python和R在处理其数组上的基本操作方面存在差异
你知道如何让它在R中工作吗
我认为
listarrays::expand_dims()
并没有真正按照你的期望工作;我想这就是你的问题所在。您应该能够通过比较看到这一点与
Python的
numpy
和R都是按元素进行减法的,所以这不是问题所在。我认为您最好直接在R中操作数组。为了便于说明,我将使用更简单的nxm矩阵在Python中,我们有
在R
相关问题 更多 >
编程相关推荐