【发布时间】:2019-02-11 06:30:04
【问题描述】:
我有一个 3D NumPy 数组,我想在 Python 中将其转换为 3D 稀疏矩阵。我查找了scipy.sparse 模块,只找到了二维稀疏矩阵实现。例如,
输入:
array([[[0],
[0],
[1],
[0],
[1],
[0],
[0]],
[[1],
[0],
[1],
[0],
[0],
[0],
[0]]])
输出:
(0,0,2) 1
(0,0,4) 1
(0,1,0) 1
(0,1,2) 1
如何做到这一点?
【问题讨论】:
-
嗨卢卡斯,我已经试过了。他们期望维度为 2 或小于 2。在我的例子中,数组的维度是 3。
-
如您所见,
scipy.sparse代码仅适用于 2d。一旦你有了稀疏矩阵,你想对它做什么?代表价值观是一回事,用它们做有意义的事情是另一回事。 -
是的,在 3d 中创建
dok或lil实现相当简单,但如果没有让csr和csc实现执行矩阵数学的算法,它们就不会特别有用。如果矩阵是某种传递函数,您可能会更好地展平输入和输出并将转换存储在 2D 中。例如,这就是如何通过Voigt Notation 在 2D 中表示 4D 对称变换