我正在尝试查找numpy矩阵操作,以获得与以下循环代码相同的结果。我相信它会更快,但我错过了一些Python技能来做到这一点。两个数组中对应列表的外积之和 - NumPy
它逐行工作,x行中的每个值乘以e中相同行的每个值,然后相加。第一项结果将是(2 * 0 + 2 * 1 + 2 * 4 + 2 * 2 + 2 * 3)+(0 * 0 + ...)+ ... +(1 * 0 + 1 * 1 + 1 * 4 + 1 * 2 + 1 * 3)= 30
任何想法将不胜感激:)。
e = np.array([[0,1,4,2,3],[2,0,2,3,0,1]])
x = np.array([[2,0,0,0,1],[0,3,0,0,4,0]])
result = np.zeros(len(x))
for key, j in enumerate(x):
for jj in j:
for i in e[key]:
result[key] += jj*i
>>> result
Out[1]: array([ 30., 56.])
谢谢你的回答。如果通过添加零使列表长度相等,该怎么办?它不会改变我的循环中的结果,也许我可以使用点积,然后按照Dakota Dutko的建议? – Daerken
@Daerken编辑了如何使用规则形状阵列的帖子。一探究竟。 – Divakar
不错:)谢谢! – Daerken