麻烦矢量化代码

时间:2013-11-25 03:05:54

标签: python numpy vectorization

我很难做到这一点。我有两个m×n矩阵(A和B),我需要将A的每一列乘以B中的行,以生成m x(n * n)矩阵。我想我在解释中并不是很清楚所以我会发布一个例子:

A = 
[1 2 
 3 4]
B = 
[5 6
 7 8]

我希望:

 [[5 6] [10 12]
  [21 24] [28 32]]

我能够使用for循环执行此操作,但我希望尽可能避免使用for。同时对所有这些使用numpy,所有数据都存储为np.array

2 个答案:

答案 0 :(得分:3)

也许:

>>> A = np.array([[1,2],[3,4]])
>>> B = np.array([[5,6],[7,8]])
>>> (A * B[None, :].T).T
array([[[ 5,  6],
        [21, 24]],

       [[10, 12],
        [28, 32]]])

我们使用NoneB添加额外维度,并使用一些转置来使对齐正确。

答案 1 :(得分:0)

如果我理解你,你想要基本的(m * n)乘法吗?使用numpy.dot()

>>> a = [[1, 0], [0, 1]]
>>> b = [[4, 1], [2, 2]]
>>> np.dot(a, b)
array([[4, 1],
       [2, 2]])