【发布时间】:2016-09-20 06:06:22
【问题描述】:
鉴于此...
我必须解释这段代码的作用,知道它使用广播和元素明智的操作概念执行 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 可以将它们转换为相同大小的其他数组,则也可以使用不同大小的数组,这种转换称为广播),用另一个 Nx1 阶的数组减去 1xN 阶的数组,得到矩阵NxN 阶 D 包含 x_j - x_1、x_j - x_2 等作为元素,最后,在最后一行计算 alpha 的倒数(这显然是一种排列),其中每个元素乘以 R 评估的总和矩阵 D 的每个单元格水平乘以 alpha_j(由于参数中的轴 = 1)
问题:
- 考虑到我是 Python 新手,我的解释可以吗?
- 代码是否有错误?因为我没有看到代码中考虑了每个总和中的“j必须不同于1、2、...、n”...如果它实际上是错误的...我该如何解决代码,所以它做的事情与图片中的完全一样?
【问题讨论】:
标签: python numpy vectorization elementwise-operations