我想在两个数组的子数组之间执行点积。
这是使用循环的代码。
有没有一种更简洁的方法来执行这种无循环的操作?
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])
答案 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))