在数学上,我试图计算x^T A x,其中x是n维坐标,A是n维方阵.然而,我想高效地计算一组坐标的这个值.例如,在两个维度中:

import numpy as np
x = np.column_stack([[1,2,3,4,5],[6,7,8,9,0]])
A = np.array([[1,0],[0,2]])

print(x[0] @ A @ x[0])  # works
# How can I get efficiently an array of x[i] @ A @ x[i]?
y = [x[i] @ A @ x[i] for i in range(x.shape[0])]

推荐答案

这就是你想要的吗?

>>> (x @ A @ x.T).diagonal()
array([ 73, 102, 137, 178,  25])

或者,也许:

>>> (x @ A * x).sum(axis=1)
array([ 73, 102, 137, 178,  25])

hpaulj条 comments 中的einsum条建议:

>>> np.einsum('ij,jk,ik->i', x, A, x)
array([ 73, 102, 137, 178,  25])

Python相关问答推荐

运行回文查找器代码时发生错误:[类型错误:builtin_index_or_system对象不可订阅]

大Pandas 胚胎中产生组合

Pytest两个具有无限循环和await命令的Deliverc函数

PMMLPipeline._ fit()需要2到3个位置参数,但给出了4个位置参数

如何更改分组条形图中条形图的 colored颜色 ?

为什么抓取的HTML与浏览器判断的元素不同?

海上重叠直方图

删除marplotlib条形图上的底边

如何更新pandas DataFrame上列标题的de值?

如何在Python中获取`Genericums`超级类型?

在pandas数据框中计算相对体积比指标,并添加指标值作为新列

手动设置seborn/matplotlib散点图连续变量图例中显示的值

在Docker容器(Alpine)上运行的Python应用程序中读取. accdb数据库

Python类型提示:对于一个可以迭代的变量,我应该使用什么?

用由数据帧的相应元素形成的列表的函数来替换列的行中的值

上传文件并使用Panda打开时的Flask 问题

对于标准的原始类型注释,从键入`和`从www.example.com `?

如何在Quarto中的标题页之前创建序言页

如何获取给定列中包含特定值的行号?

对包含JSON列的DataFrame进行分组