小块,乘法运算? (M [i,j] = a [i] * b [j])

时间:2018-11-12 18:48:02

标签: python numpy

Okey,所以我试图变得更好,以便从代码中消除不必要的循环,而我总是以这个“问题”告终:我有两个数组A和B,它们的长度分别为I和J,我想要创建一个嵌套数组M大小(I,J),其中M [I,J] = A [i] * B [j],有人知道一种无需循环的方法吗?感谢您提供任何提示或解决方案!

编辑:只是错别字。

2 个答案:

答案 0 :(得分:1)

您可以使用multiply.outer

import numpy as np

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

result = np.multiply.outer(a, b)
print(result)

输出

[[ 1  4  2]
 [ 3 12  6]
 [ 0  0  0]
 [ 2  8  4]]

答案 1 :(得分:0)

您可以通过为a构造一个 n×1 矩阵来强制广播:

a[:,None] * b

这给我们:

>>> a = np.array([1,3,0,2])
>>> b = np.array([1,4,2])
>>> a[:,None] * b
array([[ 1,  4,  2],
       [ 3, 12,  6],
       [ 0,  0,  0],
       [ 2,  8,  4]])