我需要(迅速)提取矩阵。在
稀疏-将丰度矩阵转换为均匀采样深度。在
在本例中,每一行都是一个样本,采样深度是该行的总和。我想用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, 2, 4], # sum = 6
[0, 4, 2], ] # sum = 6
PyCogent有一个逐行执行此操作的函数,但在大型矩阵上运行速度非常慢。在
我有一种感觉,在Numpy中有一个函数可以做到这一点,但我不确定它会被称为什么。在
我认为这个问题并不完全清楚。我想稀疏矩阵给出了从原始矩阵的每个系数中提取的样本数?在
查看链接中的代码,可能会加快速度。对转置矩阵进行操作,并重写链接的代码以对列而不是行进行操作。因为这样可以让处理器更好地缓存它采样的值,也就是说,内存中的跳转次数更少。在
剩下的我也会这么做,使用numpy(不一定意味着这是最有效的方法)。在
如果你需要它更快,你可以尝试在C++中对函数进行编码,并将其包含到Python中。细纹织物. 在C++中,我会对每一行进行查询,并构建一个查找表,这些表的位置为Gt;0,在查找表中的项目数量等于范围内生成^ {CD1}}整数。我将累积查找表中每个位置的绘制频率,然后将这些数字放回数组中的正确位置。从文字上讲,代码应该只有几行。在
示例:
^{pr2}$干杯, 戴维德
相关问题 更多 >
编程相关推荐