迭代在循环蟒蛇
我正在Python代码用于查找曼 - 惠特尼U统计样品超过20迭代在循环蟒蛇
在这个过程中较大的,如果有样品的排名关系整数和十进制值为行列的标准偏差公式如下:
我特别是具有与所述求和部分的麻烦。
在这里,“t_i是共享等级i的主体的数量,并且k是(不同的)等级的数量。”
我有行列的以下数组:
ranks = [ 7. 8. 12. 11. 9. 10. 1. 3. 4.5 2. 6. 4.5]
现在,我已经写了下面的函数来计算方程的所述Σ部:
sigma = 0
for i in range(1, np.amax(ranks)):
num = ranks.count(i)**3 - ranks.count(i)
denom = (n1+n2)*((n1+n2)-1)
sigma += num/denom
然而,这是不正确的,因为当我从i到k求和时,我正在看整数。我不考虑十进制值,如4.5。
我该如何解决这个问题?
它看起来像最初你试图循环范围[1, max(ranks)]
范围内的所有整数,这不是总和正在做的事情。总和遍历队列中的每个唯一元素并聚合该元素的某个转换。
这是一个更直接的方法。我没有处理索引,而是遍历元素本身。 t i将收集的第i个元素独特元素rank
。每个元素都将被考虑。它们不会影响它们是否是整数:
for ti in set(ranks):
num = ranks.count(ti)**3 - ranks.count(ti)
denom = (n1+n2)*((n1+n2)-1)
sigma += num/denom
你的第一个例子很好,但是你的第二个例子不是很好; '因为我在范围内(len(someseq)):'是对recidivist C程序员的反模式;它在各方面都变得越来越慢,并且变得越来越乏味。 – ShadowRanger
我知道,但问题让我以整数索引的方式思考:-(我展示这两个,因为我认为你必须了解索引方式,看看它是如何对应于图像中的总和 –
@ LucasKot-Zaniewski但是,如果队伍中有重复,例如,我有两个“4.5”的实例,当我在队伍中进行测试时,难道不会只计算4.5次两次? – Jonathan
你忘了这里的一些东西:'denom =(n1 + n2)((n1 + n2)-1)'? ;) – alfasin
遍历*秩*,而不是一个范围。 I.e'对于队伍来说:' –
哦,哎呀,你说得对。修正了错字@alfasin +1 – Jonathan