【发布时间】:2016-07-04 10:10:56
【问题描述】:
在 python 中,我有一个包含 N 行(示例数)和 n 列(特征数)的数组 X。
如果要计算二阶矩矩阵C
C[i,j] = E(x_i x_j)
那么我有两种可能:
-
首先,做循环:
对于范围内的 i (N): 对于范围(n)中的j: 对于范围(n)中的k: C[j,k] = C[j,k] + X[i,j]*X[i,k]/N -
第二,更简单,使用numpy乘积矩阵:
导入 numpy np C = np.transpose(X).dot(X)/N实践中的第二个版本非常快。
如果现在我要计算三阶矩矩阵T
T[i,j,k] = E(x_i x_j x_k)
那么循环替代很简单:
对于范围内的 i (N): 对于范围(n)中的j: 对于范围(n)中的k: 对于范围内的 m (n): T[j,k,m] = T[j,k,m] + X[i,j]*X[i,k]*X[i,m]/N有没有一种使用 numpy 库来计算最后一个张量的快速方法,比如二阶矩?
【问题讨论】:
标签: python algorithm numpy matrix