您需要将 的元素与v
的第一个轴对齐m
。这样做的一种方法是扩展v
到二维数组,np.newaxis/None
然后broadcasting
在执行元素除法时发挥作用。此外,由于两个输入都是整数数组并且您正在执行除法,因此您需要在执行元素除法之前将其中一个转换为浮点数。因此,最终的实现将是 -
m/v[:,None].astype(float)
如果您使用 NumPy 的真正除法函数来处理底层的浮点转换,则可以避免在用户级别转换为浮点数组。所以,它的实现将是 -np.true_divide
np.true_divide(m,v[:,None])
样品运行 -
In [203]: m
Out[203]:
array([[1, 2],
[3, 4],
[5, 6]])
In [204]: v
Out[204]: array([10, 20, 30])
In [205]: m/v[:,None].astype(float)
Out[205]:
array([[ 0.1 , 0.2 ],
[ 0.15 , 0.2 ],
[ 0.16666667, 0.2 ]])
In [206]: np.true_divide(m,v[:,None])
Out[206]:
array([[ 0.1 , 0.2 ],
[ 0.15 , 0.2 ],
[ 0.16666667, 0.2 ]])