大(稀疏)矩阵与 numpy(python)的乘法问题

计算科学 矩阵 稀疏矩阵 麻木的
2021-12-01 06:40:18

我想将两个简单的(大而稀疏的)矩阵与 numpy 相乘。我看到当矩阵太大时计算失败。

如果我取一个随机向量(大小)。使用 pandas,我转换了这个向量并获得了一个矩阵可以验证是一个对角矩阵并且迹线等于当我在 numpy 上执行此操作时,它不适用于代码如下:Xnget_dummiesMMMnn>2000

import numpy as np
import pandas as pd
np.random.seed(11111)


n_points = 5000
X = pd.Series(np.random.uniform(low=1,high=10,size=(n_points)))
X_bis = pd.get_dummies(X.astype('int').astype('str')).values
print(np.sum(np.sum(np.matmul(X_bis.T,X_bis))))

我试过了,scipy.sparse但也没有用。有人有想法吗?

1个回答

您使用的整数不足以表示您的数据。请参阅以下可解决您的问题的代码段。

import numpy as np
import pandas as pd

np.random.seed(11111)
n_points = 50000
X = pd.Series(np.random.randint(low=1, high=10, size=(n_points)))
X_bis = pd.get_dummies(X, dtype=np.uint64).values
print(np.sum(X_bis.T @ X_bis))