如何在 python 中创建一个大的矩阵矩阵?
How to create a large matrix of matrices in python?
我正在处理一个大小为 m * n 的大型矩阵,其中 m,n>100000。由于我的数据很大,我想将矩阵存储在内存中并使用 HDF5 和 PyTables。
但是,我的矩阵的元素是 5*5 维实数值的小矩阵。
我已经看过下面的post,但我想知道是否有任何其他方法可以将这种类型的数据存储在表中?
(Create a larger matrix from smaller matrices in numpy)
提前致谢
在numpy
中有两个相关结构。
一个是4维数组,例如np.zeros((100,100,5,5),int)
。另一个是对象的二维数组。 np.zeros((100,100),dtype=object)
。对于对象数组,元素可以是任何东西——字符串、数字、列表、您的 5x5 数组、其他 7x3 数组、None
等)。
在 4d 数组上做数学运算是最简单的,例如取所有 5x5 子数组的平均值,或找到所有数组的 [:,:,0,0]
角。
如果您的子数组都是 5x5,创建和填充 object
数组可能会很棘手。 np.array(...)
如果可能,尝试创建 4dim 数组。
使用 h5py
您可以将文件分块,并访问较大数组的部分内容。但是你仍然需要有一个可行的 numpy 表示来对它们做任何事情。
我正在处理一个大小为 m * n 的大型矩阵,其中 m,n>100000。由于我的数据很大,我想将矩阵存储在内存中并使用 HDF5 和 PyTables。
但是,我的矩阵的元素是 5*5 维实数值的小矩阵。
我已经看过下面的post,但我想知道是否有任何其他方法可以将这种类型的数据存储在表中?
(Create a larger matrix from smaller matrices in numpy)
提前致谢
在numpy
中有两个相关结构。
一个是4维数组,例如np.zeros((100,100,5,5),int)
。另一个是对象的二维数组。 np.zeros((100,100),dtype=object)
。对于对象数组,元素可以是任何东西——字符串、数字、列表、您的 5x5 数组、其他 7x3 数组、None
等)。
在 4d 数组上做数学运算是最简单的,例如取所有 5x5 子数组的平均值,或找到所有数组的 [:,:,0,0]
角。
如果您的子数组都是 5x5,创建和填充 object
数组可能会很棘手。 np.array(...)
如果可能,尝试创建 4dim 数组。
使用 h5py
您可以将文件分块,并访问较大数组的部分内容。但是你仍然需要有一个可行的 numpy 表示来对它们做任何事情。