python - 计算多维numpy数组元素的内点积
问题描述
计算多维 numpy 数组的“内部”点积的最优雅方法是什么?
假设我有 2 个形状为 (2, 2, 2) 的数组a和b(可以是 (n, n, 2) 且 n>= 2),并且我想使用以下内容计算inner_dot(a, b)定义:
np.array([[np.dot(a[0, 0, :], b[0, 0, :]), np.dot(a[1, 0, :], b[1, 0, :])],
[np.dot(a[0, 1, :], b[0, 1, :]), np.dot(a[1, 1, :], b[1, 1, :])]])
这是一个例子:
a = np.arange(8).reshape(2, 2, 2)
b = np.arange(8).reshape(2, 2, 2)
预期结果:
array([[ 1, 41],
[13, 85]])
解决方案
您可以直接将两个数组相乘并sum
沿最后一个轴相乘。此外,由于您希望输出的右上角为np.dot(a[1, 0, :], b[1, 0, :])
,而不0,1
是非对角元素的方式可能相同,因此您可以transpose
得到预期的结果:
(a*b).sum(-1).T
array([[ 1, 41],
[13, 85]])
推荐阅读
- asp.net - 如何从控制器返回 BadRequest?
- azure - 获取冻结的 Azure 容器实例的日志
- r - 在ggplot2相关图中如何制作对角线标签并自定义图例
- javascript - 您可以从函数中选择数组中的特定位置吗?
- qt - QuickControls2 图像不会拉伸到父级的全宽
- python - Python 3 列出所有可能的内聚组合
- msbuild - 在 Visual Studio 项目中使用“nuget pack”时覆盖 nuget 包名称
- python - 无法导入 Django。您确定它已安装并在您的 PYTHONPATH 上可用吗
- react-native - React Navigation - 关闭抽屉后重新渲染组件
- powershell - Get-RDUsersession 未被识别为 cmdlet 的名称