【问题标题】:numpy kron along a given axis沿给定轴的 numpy kron
【发布时间】:2018-06-04 08:50:46
【问题描述】:

是否有沿给定轴应用克罗内克积的功能?例如,给定形状为a.shape == (n, k)b.shape == (n, l) 的二维数组ab,计算形状为c.shape == (n, k*l)c,其等效结果为:

c = np.empty((a.shape[0], a.shape[1] * b.shape[1]))
for i in range(c.shape[0]):
    c[i,:] = np.kron(a[i], b[i])

【问题讨论】:

  • 你能看一下np.kron的代码吗?不记得是编译的还是python的?

标签: python numpy


【解决方案1】:

没有内置的,但我们可以使用 outer elementwise-multiplication 保持它们的第一个轴对齐,然后重新整形 -

c = (a[:,:,None]*b[:,None,:]).reshape(a.shape[0],-1)

或者,我们可以使用einsum -

c = np.einsum('nk,nl->nkl',a,b).reshape(a.shape[0],-1)

【讨论】:

  • 太棒了,谢谢。喜欢 einsum 解决方案,它是一个多功能的工具。
猜你喜欢
  • 2011-06-29
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
相关资源
最近更新 更多