如何在numpy中加点子数组?

时间:2019-03-18 12:11:28

标签: numpy

我想在两个数组的子数组之间执行点积。
这是使用循环的代码。
有没有一种更简洁的方法来执行这种无循环的操作?

result = numpy.empty(100)
A = numpy.random.randn(100, 1, 3)
B = numpy.random.randn(100, 3, 1)
for i in range(100):
    result[i] = A[i].dot(B[i])

2 个答案:

答案 0 :(得分:0)

我发现numpy.einsum()可以完全满足我的需求。

numpy.einsum('ijk,ikj->i', A, B)

答案 1 :(得分:0)

U给出了更好的答案。 我使用:

C = numpy.transpose(numpy.sum(A*numpy.reshape(B,(100,1,3)),2))