Python 成分方差的矢量化计算 给定一个具有X席,j的n×m矩阵,它是一个m×m矩阵,i,j条目包括表达式< /p>

Python 成分方差的矢量化计算 给定一个具有X席,j的n×m矩阵,它是一个m×m矩阵,i,j条目包括表达式< /p>,python,numpy,statistics,vectorization,Python,Numpy,Statistics,Vectorization,∑k=1n[ln2(xk,i/xk,j)] (它包括其他易于计算的表达式) 这在循环中很容易计算,但如何使用矢量化计算呢 下面是糟糕的循环代码: x = np.array([[1, 2, 3], [4, 5, 6]], dtype=float) v = np.zeros((3, 3)) for i in range(3): for j in range(3): for k in range(2): v[i, j] += np.log(x[k,

∑k=1n[ln2(xk,i/xk,j)]

(它包括其他易于计算的表达式)

这在循环中很容易计算,但如何使用矢量化计算呢


下面是糟糕的循环代码:

x = np.array([[1, 2, 3], [4, 5, 6]], dtype=float)

v = np.zeros((3, 3))

for i in range(3):
    for j in range(3):
        for k in range(2):
            v[i, j] += np.log(x[k, i] / x[k, j])**2

假设您的意思类似于
(np.log(x[k,i]/x[k,j])**2)
,用NumPy术语表示,
k=1:n
,可以建议使用一种矢量化方法-


谢谢你写的广播很有趣,我会调查一下,但我不同意关于意图的假设:我是说log squared.:-)IDK,我还不明白你做了什么。不过,非常感谢你的回答。当然,我打算试试。谢谢@AmiTavory我想您可以添加循环代码,否则在问题中会用到循环代码?这可以用来验证:)这是一个很好的建议,迪瓦卡-我会尽快做(现在不行)。
((np.log(x[:,:,None]/x[:,None])**2)).sum(0)