2017-12-27 1369 views
0

我想做一些类似于以下R代码numpy,其中y是回收利用。如何在两个numpy阵列的尺寸不匹配时回收元素?

R> x=rbind(c(1,2,3), c(4,5,6)) 
R> y=c(1,2) 
R> x/y 
    [,1] [,2] [,3] 
[1,] 1 2.0 3 
[2,] 2 2.5 3 

显然,以下代码不适用于numpy。有人知道什么是可用的等效Python代码吗?谢谢。

>>> x=numpy.array([[1,2,3], [4, 5, 6]]) 
>>> y=numpy.array([1,2]) 
>>> x/y 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: operands could not be broadcast together with shapes (2,3) (2,) 
+0

你能解释一下R代码在干什么吗? – Divakar

+0

它将'x'的每一列用'y'分开。 – user1424739

+0

问题的标题有点令人困惑 - “回收y”是什么意思? –

回答

1

如何

x=numpy.array([[1,2,3], [4, 5, 6]]) 
y=numpy.array([1,2]) 
x/y[:, None] 

y[:, None]接通(2,)阵列到阵列(2,1),从而允许分割的广播与x

+0

此功能在哪里记录? – user1424739

+0

@ user1424739 https://docs.scipy.org/doc/numpy-1.13.0/user/basics.broadcasting.html – Divakar

+0

@ user1424739另一个信息来源是:https://docs.scipy.org/doc/ numpy-1.13.0/reference/arrays.indexing.html请注意,'y [:,None]'相当于'y [:, numpy.newaxis]'。 –