擅长:python、mysql、java
<p>在Python2.7中,可以使用<code>numpy</code>和一些注意事项,正如我在改编Python3.4中的Bengt答案时发现的那样。</p>
<ol>
<li>确保除法始终返回浮点值:<code>from __future__ import division</code></li>
<li>在<code>ddof=1</code>函数中使用<code>std</code>指定方差的除法参数,即<code>numpy.std(c0, ddof=1)</code>。numpy的标准偏差默认行为是除以<code>n</code>,而使用<code>ddof=1</code>则除以<code>n-1</code>。</li>
</ol>
<p>代码</p>
<pre><code>from __future__ import division #Ensure division returns float
from numpy import mean, std # version >= 1.7.1 && <= 1.9.1
from math import sqrt
import sys
def cohen_d(x,y):
return (mean(x) - mean(y)) / sqrt((std(x, ddof=1) ** 2 + std(y, ddof=1) ** 2) / 2.0)
if __name__ == "__main__":
# test conditions
c0 = [2, 4, 7, 3, 7, 35, 8, 9]
c1 = [i * 2 for i in c0]
print(cohen_d(c0,c1))
</code></pre>
<p>然后输出为:</p>
<pre><code>-0.556767952265
</code></pre>