我已经有了具有以下功能的密集数组的现有代码,并且也希望支持稀疏矩阵。
特别是,我有一个形状为tensor
的三维(k, k, n, n)
,像这样,我将其部分扁平化为形状为matrix
的{{1}}。
(k * n, k * n)
在稀疏设置中,我有一个# Roll the third dimension to the second position to get a tensor
# with shape (k, n, k, n)
rolled = np.rollaxis(tensor, 2, 1)
# Extract the dimensions
k, n = rolled.shape[:2]
# Reshape to partially flatten the array
matrix = rolled.reshape((k * n, k * n))
by k
列表列表,其中每个元素都是k
by n
稀疏矩阵。不能选择使用n
,因为某些维稀疏而有些维密。关于如何实现相同行为的任何想法,使我最终得到形状为np.rollaxis
的稀疏矩阵?
一种选择是使用coordinate format并分别设置(k * n, k * n)
的每个元素,但这似乎很麻烦且容易出错。