我希望实现一个大型矩阵列表的硬件高效乘法(大约200000 x 200000)。这些矩阵非常接近于单位矩阵,但有些元素变为无理数
为了减少内存占用并加快计算速度,我希望将标识的0和1存储为单字节,如下所示
import numpy as np
size = 200000
large_matrix = np.identity(size, dtype=uint8)
只需将一些元素更改为不同的数据类型
import sympy as sp
# sympy object
irr1 = sp.sqrt(2)
# float
irr2 = e
large_matrix[123456, 100456] = irr1
large_matirx[100456, 123456] = irr2
是否可以仅保存具有不同数据类型的矩阵的这些元素,而所有其他元素仍然是字节?我不想因为我需要一个元素作为浮点,就必须把所有的东西都改成浮点
-----编辑------
如果在numpy中不可能,那么在没有numpy的情况下如何找到解决方案
根据定义,NumPy数组只有一个数据类型。您可以在NumPy文档中看到:
进一步阅读:https://docs.scipy.org/doc/numpy/reference/generated/numpy.dtype.html
也许你可以看一看SciPy的Coordinate-based sparse matrix。在这种情况下,SciPy将创建一个稀疏矩阵(针对如此大的空矩阵进行了优化),并使用其坐标格式,您可以根据需要访问和修改数据
根据其文件:
它不创建矩阵,而是创建一组带有值的坐标,这比仅用零填充矩阵占用的空间要小得多
相关问题 更多 >
编程相关推荐