【发布时间】:2015-07-21 14:45:31
【问题描述】:
这里的统计学家试图弄清楚 NumPy 是如何工作的。我需要使用 SciPy 的rv_discrete 来实现一些东西,但是我遇到了一些错误,这些错误可以追溯到 NumPy 中的以下行为。这可能是超级基本的,但我很困惑。
我试图理解为什么下面的简单代码不起作用:
import numpy as np
def testfn(k):
if k == 1:
return 1
else:
return 1/k**2
def sumtest(k):
m = np.arange(1,k+1)
print(np.sum(testfn(m),axis=0))
sumtest(100)
如果我简单地去掉 testfn() 中的条件语句并用 return 1/k**2 替换它,那么一切都很好。我可以直觉这是因为在sumtest() 内部我将一个 ndarray 对象传递给testfn(),但是当这种情况发生时,我无法掌握引擎盖下发生的事情。
我问这个的原因是,这 正是_cdfsingle() 在 SciPy 的 rv_discrete 类中的编码方式,我需要知道它是如何定义新的随机变量的。
如果这太基本了,那么我会很感激一个链接到某个地方开始。任何帮助将不胜感激。
编辑:根据下面的评论,让我澄清一下我想要发生的事情。我基本上希望testfn() 表现得好像它在传递给它的数组上按组件操作。因此,如果[1,2,3] 是传递给testfn() 的数组,那么最终我希望np.sum 返回数量1 + 1/4 + 1/9。
【问题讨论】: