【发布时间】:2015-03-24 11:29:44
【问题描述】:
假设我们有以下向量:
v = np.array([4, 0, 1])
目标是创建 5 x 3 矩阵M,如下所示:
[[0 1 0]
[0 0 1]
[0 0 0]
[0 0 0]
[1 0 0]]
对于v 中的相应索引,每列中只有一个元素等于1。例如,既然v[0] 是 4,那么 M[4, 0] == 1,因为 v[2] 是 1,那么 M[1, 2] == 1。
如何使用 scipy 和 numpy 在 Python 中构建这样的矩阵?在 MATLAB 中,您可以在一行中使用 sparse 和 full 函数来执行此操作。
我不想使用for 循环,因为我正在寻找它的矢量化实现。
【问题讨论】:
-
明确一点,您希望输出矩阵是稀疏的还是密集的?
-
我将使用这个“M”作为掩码矩阵,通过元素乘法来抵消一些值(exp: result=A.*M)。 M将是巨大的前“100,000x10”。所以我的目标是使用最优化的。只要快速且矢量化,密集或稀疏都可以。
-
@superMind,那么你可能想要一个稀疏矩阵。
-
A是稀疏的还是密集的? -
A 是密集矩阵。在每一列中,我只想取消一个条目,基本上是使用 M 的补码
标签: python numpy matrix scipy vectorization