Python中的乘法与不同长度的数组

时间:2016-05-09 21:42:02

标签: python arrays matrix multiplication

我有五个100x100阵列,A,我希望将每个矩阵乘以长度为5的数组B中的值。我希望将A中的第一个矩阵乘以B中的第一个值和第二个矩阵通过B中的第二个值,等等。我能做到吗?

1 个答案:

答案 0 :(得分:0)

实际上,gboffi在他的评论中提供了答案。然而,我想详细说明这个答案,给出一个代码的具体例子:

import numpy as np

#example data, all arrays of ones 100x100
A1 = A2 = A3 =A4 = A5 = np.ones((100, 100))    

#example array containing the factor for each matrix
B = np.array([1, 2, 3, 4, 5])

#create an array containing all matrices
A = np.array([A1, A2, A3, A4, A5])

A*B[:,None,None]

结果如下:

array([[[ 1.,  1.,  1., ...,  1.,  1.,  1.],
    [ 1.,  1.,  1., ...,  1.,  1.,  1.],
    [ 1.,  1.,  1., ...,  1.,  1.,  1.],
    ..., 
    [ 1.,  1.,  1., ...,  1.,  1.,  1.],
    [ 1.,  1.,  1., ...,  1.,  1.,  1.],
    [ 1.,  1.,  1., ...,  1.,  1.,  1.]],

   [[ 2.,  2.,  2., ...,  2.,  2.,  2.],
    [ 2.,  2.,  2., ...,  2.,  2.,  2.],
    [ 2.,  2.,  2., ...,  2.,  2.,  2.],
    ..., 
    [ 2.,  2.,  2., ...,  2.,  2.,  2.],
    [ 2.,  2.,  2., ...,  2.,  2.,  2.],
    [ 2.,  2.,  2., ...,  2.,  2.,  2.]],

   [[ 3.,  3.,  3., ...,  3.,  3.,  3.],
    [ 3.,  3.,  3., ...,  3.,  3.,  3.],
    [ 3.,  3.,  3., ...,  3.,  3.,  3.],
    ..., 
    [ 3.,  3.,  3., ...,  3.,  3.,  3.],
    [ 3.,  3.,  3., ...,  3.,  3.,  3.],
    [ 3.,  3.,  3., ...,  3.,  3.,  3.]],

   [[ 4.,  4.,  4., ...,  4.,  4.,  4.],
    [ 4.,  4.,  4., ...,  4.,  4.,  4.],
    [ 4.,  4.,  4., ...,  4.,  4.,  4.],
    ..., 
    [ 4.,  4.,  4., ...,  4.,  4.,  4.],
    [ 4.,  4.,  4., ...,  4.,  4.,  4.],
    [ 4.,  4.,  4., ...,  4.,  4.,  4.]],

   [[ 5.,  5.,  5., ...,  5.,  5.,  5.],
    [ 5.,  5.,  5., ...,  5.,  5.,  5.],
    [ 5.,  5.,  5., ...,  5.,  5.,  5.],
    ..., 
    [ 5.,  5.,  5., ...,  5.,  5.,  5.],
    [ 5.,  5.,  5., ...,  5.,  5.,  5.],
    [ 5.,  5.,  5., ...,  5.,  5.,  5.]]])