Numpy 用einsum计算三维矩阵的协方差

Numpy 用einsum计算三维矩阵的协方差,numpy,Numpy,我得到了一个时间序列数据数组,其形状为(24662498,9)((资产、日期、特征)) 我有9个特征,我想在这些特征上进行PCA来降低这个轴上的维数 我正在努力计算协方差矩阵,Z=X.T@X 我想我想用一个einsum来表达这一点,但我不确定如何表达。我当然也对其他方法感兴趣,因为这是为了学习numpy,而不是实际解决问题 编辑:这是我迄今为止(显然是错误的)尝试: np.einsum('ijk,ijl->ijkl',myData, myData)` (这只是挂起了我的系统。) 编辑2:

我得到了一个时间序列数据数组,其形状为
(24662498,9
)(
(资产、日期、特征)

我有9个特征,我想在这些特征上进行PCA来降低这个轴上的维数

我正在努力计算协方差矩阵,
Z=X.T@X

我想我想用一个
einsum
来表达这一点,但我不确定如何表达。我当然也对其他方法感兴趣,因为这是为了学习
numpy
,而不是实际解决问题

编辑:这是我迄今为止(显然是错误的)尝试:

np.einsum('ijk,ijl->ijkl',myData, myData)`
(这只是挂起了我的系统。)

编辑2


我开始明白我应该使用
np.linalg.svd
来解决这个问题。

这似乎是正确的。问题可能是
8*2466*2498*9*9/1024**3=3.7
(3.7 Gb),因此它开始交换挂起系统的内存。在这种情况下,最好使用小阵列测试它—这些阵列不会占用太长时间,占用太多内存,更重要的是,可以查看。如果你的主要目标是学习
numpy
,这似乎是正确的。问题可能是
8*2466*2498*9*9/1024**3=3.7
(3.7 Gb),因此它开始交换挂起系统的内存。在这种情况下,最好使用小阵列测试它—这些阵列不会占用太长时间,占用太多内存,更重要的是,可以查看。如果你的主要目标是学习
numpy