鉴于这种......矢量化评估,广播单元方式操作
我要解释这个代码做什么,知道它执行F的量化评估,利用广播,元素明智的操作理念......
def F(x_pos, alpha):
D = x_pos.reshape(1,-1) - x_pos.reshape(-1,1)
return (1./alpha) * (alpha.reshape(1,-1) * R(D)).sum(axis=1)
我的解释是:
函数F的第一行接收x_pos和alpha作为参数(均为numpy数组),在第二行中,通过广播计算矩阵D(基本操作,如数组中的加法numpy是元素执行的,即元素但如果numpy可以将它们转换成其他尺寸相同的其他尺寸,那么也可以使用不同大小的arranys,这种转换称为广播),将Nx1的另一个序列减去1xN的序列,得到矩阵D的包含x_j - x_1,x_j - x_2等等的顺序NxN作为元素,最后,在最后一行中计算alpha的倒数(显然是一种排列),其中每个元素乘以每个元素的R评估值之和矩阵D的单元格水平地乘以alpha_j(由于参数中的轴= 1)
问题:
- 考虑到我是新来的Python,我的解释好吗?
- 该代码有错误或没有?因为我没有看到每个数字中的“j必须与1,2,...,n不同”在代码中被考虑到......并且如果它实际上是错误的......我该如何修复该代码与图像中所陈述的完全相同?
'X_POS [:,无] - x_pos'几乎肯定会慢一些,因为它具有解析切片,而是仅由具有可忽略的恒定量,并且肯定是更地道 – Eric
Divakar ...谢谢你,但我觉得你没看过我的问题... – OiciTrap
@Oici看看编辑的文本和代码有意义吗? – Divakar