对于这个矩阵K =
[[1. 2. 3.]
[ 0. 0. 0.]
[ 4. 5. 6.]
[ 0. 0. 0.]
[ 4. 5. 6.]
[ 0. 0. 0.]]
如何在矩阵中存储与非零唯一行对应的重复行的索引列表/数组 .
在此示例中:[0,2]是非零唯一行的索引 .
问题:如何将这些信息存储在字典中:
corresponding value for key 0: [0]
corresponding value for key 2: [2,4]
谢谢!
2 回答
这是通过
collections.defaultdict
的一种方法 . 它通过带有enumerate
的for
循环进行迭代,并使用set
来跟踪看到的项目 .您可以在结尾处轻松地从字典中删除
(0, 0, 0)
,并在必要时重命名密钥 . 该方法的复杂度为O(n) .结果:
鉴于您的数据位于元组列表中 .
Edit in response to comments:
将数据反转为默认字典,将索引附加到附加到字典中每个键的列表中 .
输出是:
Original
一个简单的循环就行了 . 这将
忽略
(0,0,0)
记录任何连续重复集的第一个实例的索引
它将索引存储在
set()
中以获得性能,但最后对它们进行排序 .输出是