将numpy数组中的每个元素乘以另一个numpy数组中的每个元素

时间:2016-02-24 22:42:18

标签: python arrays numpy

假设我有两个数组:

DECLARE @description AS VARCHAR(50) = 'Hello World'

;WITH CTE AS (

    SELECT  Menu.*
    FROM    dbo.ItemMenu Menu
    WHERE   Menu.descname = @description
    UNION   ALL
    SELECT  Menu2.*
    FROM    dbo.ItemMenu Menu2
    JOIN    CTE
    ON      Menu2.idParent = CTE.Id
)
Update  ActualMenu
SET     BolActive = 1 
FROM    CTE Menu
JOIN    dbo.ItemMenu ActualMenu
ON      ActualMenu.Id = Menu.Id

其中a通常是长度为a = np.array([1,2,3,4,5]) b = np.array([6,7,8]) 的1D数组,b是长度为m的1D数组,其中n。我想将a和b乘以元素,以便最终结果具有n!=m形状:

(n*m, 1)

1 个答案:

答案 0 :(得分:2)

使用broadcastingb扩展为2D数组形状后,您可以使用None/np.newaxis进行乘法运算。然后,使用.ravel将乘法结果展平为所需的输出,如此 -

(b[:,None]*a).ravel()

这实际上是在执行外部产品,所以也可以使用np.outer这样 -

np.outer(b,a).ravel()

示例运行 -

In [822]: a
Out[822]: array([1, 2, 3, 4, 5])

In [823]: b
Out[823]: array([6, 7, 8])

In [824]: (b[:,None]*a).ravel()
Out[824]: array([ 6, 12, 18, 24, 30,  7, 14, 21, 28, 35,  8, 16, 24, 32, 40])

In [825]: np.outer(b,a).ravel()
Out[825]: array([ 6, 12, 18, 24, 30,  7, 14, 21, 28, 35,  8, 16, 24, 32, 40])