python - 矩阵乘法,但仅在特定行和列之间
问题描述
我有三个两个矩阵A
,B
我想要的矩阵乘积是diagonal(A.B.A^T)
,矩阵的转置在哪里A^T
。矩阵的维度如下
A - (2^n, n)
B - (n, n)
其中 isn
是任意自然数。
我希望矩阵的第一行切片与矩阵A
相乘,B
并且它们的乘积与矩阵的第一列相乘A^T
。我不想要完整的产品,A.B.A^T
因为我只想要对角线切片。
在我看来,这可以使用 eisum 来实现。
解决方案
这是使用 einsum 的方法
np.random.seed(1)
A = np.random.randint(0,10,(8,4))
B = np.random.randint(0,10,(4,4))
# brute force for reference
np.diag(A@B@A.T)
# array([3830, 233, 2835, 958, 3706, 1273, 5478, 934])
# more economical
np.einsum('ij,jk,ik->i',A,B,A)
# array([3830, 233, 2835, 958, 3706, 1273, 5478, 934])
推荐阅读
- xml - 从重定向电子邮件将 CSV 和 XML 导入 mySQL 数据库的示例
- c++ - 在 std::vector 处没有可行的重载 '='
- youtube - Youtube Analytics API 过滤“不等于”
- html - 如何将子元素(img)的高度赋予父元素(部分)?
- firebase - 在 Google Cloud 上自动生成 API 密钥
- python - ResNet50:TypeError:无法转换类型的对象
张量 - r - ggplot 分组堆积条形图更改刻度标签
- reactjs - 错误不变违规:requireNativeComponent:在 UIManager 中找不到“RNSVGLinearGradient”。IOS React Native
- firebase - 火力基地 | 在functions.pubsub.schedule onRun上获取RemoteConfig值时出错
- dns - 如果 /etc/hosts 有负载均衡器的条目 0.0.0.0/0 将调用哪个 IP