我需要(快速)稀疏矩阵。
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 中有一个函数可以做到这一点,但我不确定它会被调用什么。