当两个 numpy 数组的维度不匹配时如何回收元素?

How to recycle elememts when dimensions of two numpy arrays do not matches?

我想用 numpy 执行类似于以下 R 代码的操作,其中 y 被回收。

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,) 

怎么样

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

y[:, None](2,) 数组转换为 (2,1) 数组,从而允许使用 x.

进行广播除法