gpt4 book ai didi

python - 加载用 np.save 保存的稀疏矩阵

转载 作者:行者123 更新时间:2023-11-30 23:00:17 27 4
gpt4 key购买 nike

我使用 np.save('X', X) 保存了 scipy csr 矩阵。当我用 np.load('X.npy') 加载它时,我得到这个签名:

array(<240760x110493 sparse matrix of type '<class 'numpy.float64'>'
with 20618831 stored elements in Compressed Sparse Row format>, dtype=object)

但是,我无法使用索引(例如 X[0,0]X[:10,:10] or X[0] 都会给出错误 IndexError: too many indices for array )并调用 .shape 来访问此数据。返回()

有没有办法访问这些数据,或者它现在是否已损坏?

编辑。

由于有 3 个选项可以保存/加载矩阵,因此我进行了速度比较,看看哪个最适合我的稀疏矩阵:

编写稀疏矩阵:

%timeit -n1 scipy.io.savemat('tt', {'t': X})
1 loops, best of 3: 66.3 ms per loop

timeit -n1 scipy.io.mmwrite('tt_mm', X)
1 loops, best of 3: 7.55 s per loop

timeit -n1 np.save('tt_np', X)
1 loops, best of 3: 188 ms per loop

读取稀疏矩阵:

timeit -n1 scipy.io.loadmat('tt')
1 loops, best of 3: 9.78 ms per loop

%timeit -n1 scipy.io.mmread('tt_mm')
1 loops, best of 3: 5.72 s per loop

%timeit -n1 np.load('tt_np.npy')
1 loops, best of 3: 150 ms per loop

结果是mmread/mmwrite非常低(大约慢了 100 倍),并且 savemat/loadmatsave/load 快 3-10 倍.

最佳答案

让我们关注打印中的所有线索

array(<240760x110493 sparse matrix of type '<class 'numpy.float64'>'
with 20618831 stored elements in Compressed Sparse Row format>, dtype=object)

最外面:

array(....,dtype=object)

稀疏矩阵不是规则数组;对于np.save来说,它只是一个Python对象。因此它将其包装在 dtype=object 中并保存。它是一个 0d 数组(因此是 () 形状),因此所有索引尝试都会失败。尝试一下

M=arr.item() # or
M=arr[()]

现在 M 应显示为:

sparse matrix of type '<class 'numpy.float64'>'
with 20618831 stored elements in Compressed Sparse Row format

具有诸如M.shape之类的属性。 M.A 将显示密集形式,因为它太大而无法实现。

关于python - 加载用 np.save 保存的稀疏矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35356933/

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