【发布时间】:2013-03-19 18:47:29
【问题描述】:
我需要(快速)稀疏矩阵。
Rarefaction - 将丰度矩阵转换为均匀的采样深度。
在此示例中,每一行都是一个样本,采样深度是该行的总和。我想通过min(rowsums(matrix)) 样本随机采样(替换)矩阵。
假设我有一个矩阵:
>>> m = [ [0, 9, 0],
... [0, 3, 3],
... [0, 4, 4] ]
稀疏函数逐行随机抽样,替换为min(rowsums(matrix)) 次(在本例中为 6)。
>>> rf = rarefaction(m)
>>> rf
[ [0, 6, 0], # sum = 6
[0, 3, 3], # sum = 6
[0, 3, 3] ] # sum = 6
结果是随机的,但行总和始终相同。
>>> rf = rarefaction(m)
>>> rf
[ [0, 6, 0], # sum = 6
[0, 2, 4], # sum = 6
[0, 4, 2], ] # sum = 6
PyCogent 有一个函数可以逐行执行此操作,但在大型矩阵上速度非常慢。
我感觉 Numpy 中有一个函数可以做到这一点,但我不确定它会被调用什么。
【问题讨论】:
-
我认为
nowsums真的意味着rowsums?