【发布时间】:2011-12-09 17:39:38
【问题描述】:
我有一个大矩阵(大约 80,000 X 60,000),我基本上想打乱所有条目(即,独立地随机排列行和列)。
我相信如果我遍历列并使用 randperm 随机排列每一列,它会起作用。 (或者,我同样可以做行。)由于这涉及一个具有 60K 迭代的循环,我想知道是否有人可以提出更有效的选择?
我也一直在使用 numpy/scipy,所以如果您知道 python 中有一个不错的选择,那也很好。
谢谢! 苏珊
感谢所有深思熟虑的答案!更多信息:矩阵的行表示文档,每行中的数据是该文档的 tf-idf 权重向量。每列对应于词汇表中的一个术语。我正在使用 pdist 计算所有论文对之间的余弦相似度。我想生成一组随机的论文进行比较。
我认为只是排列列会起作用,因为每篇论文都被分配了一组随机的术语频率。 (排列行只是意味着重新排序论文。)正如 Jonathan 指出的那样,这具有不制作整个矩阵的新副本的优点,而且听起来其他选项都可以。
【问题讨论】:
-
对所有条目进行打乱并不等同于对行和列进行独立打乱。 n!m! 不是 (nm)!。这意味着您不会通过打乱行和列来获得所有情况。这对你重要吗?你更喜欢哪个选项?
标签: python matlab random permutation