在Numpy中将1-D阵列添加到3-D阵列

psh*_*017 6 python arrays numpy vectorization numpy-broadcasting

我试图添加两个数组.

np.zeros((6,9,20)) + np.array([1,2,3,4,5,6,7,8,9])
Run Code Online (Sandbox Code Playgroud)

我想得到一些类似的东西

array([[[ 1.,  1.,  1., ...,  1.,  1.,  1.],
        [ 2.,  2.,  2., ...,  2.,  2.,  2.],
        [ 3.,  3.,  3., ...,  3.,  3.,  3.],
        ..., 
        [ 7.,  7.,  7., ...,  7.,  7.,  7.],
        [ 8.,  8.,  8., ...,  8.,  8.,  8.],
        [ 9.,  9.,  9., ...,  9.,  9.,  9.]],

       [[ 1.,  1.,  1., ...,  1.,  1.,  1.],
        [ 2.,  2.,  2., ...,  2.,  2.,  2.],
        [ 3.,  3.,  3., ...,  3.,  3.,  3.],
        ..., 
        [ 7.,  7.,  7., ...,  7.,  7.,  7.],
        [ 8.,  8.,  8., ...,  8.,  8.,  8.],
        [ 9.,  9.,  9., ...,  9.,  9.,  9.]],
Run Code Online (Sandbox Code Playgroud)

因此,在相应列的每个矩阵中添加条目.我知道我可以在某种循环中对其进行编码,但我正在尝试使用更优雅/更快的解决方案.

Div*_*kar 6

broadcasting在用None或扩展第二个数组的尺寸之后你可以发挥作用np.newaxis- 就像这样 -

np.zeros((6,9,20))+np.array([1,2,3,4,5,6,7,8,9])[None,:,None]
Run Code Online (Sandbox Code Playgroud)