gpt4 book ai didi

python - 三阶矩计算 - numpy

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:41:33 25 4
gpt4 key购买 nike

在 python 中,我有一个包含 N 行(示例数)和 n 列(特征数)的数组 X。

如果我要计算二阶矩矩阵C

C[i,j] = E(x_i x_j)

那么我有两种可能:

  • 首先,执行循环:

    for i in range(N):    for j in range(n):        for k in range(n):            C[j,k] = C[j,k] + X[i,j]*X[i,k]/N
  • 二更简单,使用numpy乘积矩阵:

    import numpy np    C = np.transpose(X).dot(X)/N

    实践中的第二个版本速度极快。

如果现在我想计算三阶矩矩阵T

T[i,j,k] = E(x_i x_j x_k)

那么循环替代就很简单了:

for i in range(N):   for j in range(n):      for k in range(n):         for m in range(n):            T[j,k,m] = T[j,k,m] + X[i,j]*X[i,k]*X[i,m]/N

是否有使用 numpy 库快速计算最后一个张量的方法,例如二阶矩?

最佳答案

您可以使用 NumPy's einsum notation解决您的二阶和三阶案例。

二阶:

np.einsum('ij,ik->jk',X,X)/N

三阶:

np.einsum('ij,ik,il->jkl',X,X,X)/N

可以看出,将其扩展到更高阶的情况会更容易/直观。

关于python - 三阶矩计算 - numpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38182087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com