如何用dtype = float16创建巨大的稀疏矩阵?

时间:2018-05-31 21:11:47

标签: python matrix sparse-matrix

我已经尝试了所有这些并且有内存错误或某种其他错误。

Matrix1 = csc_matrix((130000,130000)).todense()

Matrix1 = csc_matrix((130000,130000), dtype=float_).todense()

Matrix1 = csc_matrix((130000,130000), dtype=float16).todense()

如何使用float类型的数据创建一个巨大的稀疏矩阵?

1 个答案:

答案 0 :(得分:0)

要创建一个巨大的稀疏矩阵,只需完成您正在做的事情:

Matrix1 = csc_matrix((130000,130000), dtype=float16)

...最后没有打电话给todense()。这成功了,占用了很少的内存。 1

当你添加todense()时,它成功地创建了一个占用少量内存的巨大稀疏数组,然后尝试将其转换为占用大量内存的密集数组,这会导致{ {1}}。但解决方法就是......不要这样做。

同样,如果你使用dtype=float_而不是MemoryError,你会获得float64值(它们不是你想要的,占用内存的4倍),但同样,解决方案是只是......不要这样做。

<子> 1。 dtype=float16为稀疏数组句柄提供56个字节,sys.getsizeof(m)为内部存储句柄提供96个字节,sys.getsizeof(m.data)为实际存储提供0个字节,总共152个字节。这不太可能引发m.data.nbytes