我想知道如何使以下代码更短和/或更有效。我可以(或者应该)通过使用函数方法摆脱for循环,还是应该从numpy中使用方法?
该代码计算整数数组的期望值。
vals = np.arange(self.n+1)
# array of probability of each value in vals
parr = np.ones(len(vals))
for i in range(len(vals)):
parr[i] *= self.prob(vals[i])
return np.dot(vals,parr)
根据评论中的要求,方法prob()的实现:
def prob(self, x):
"""Computes probability of removing x items
:param x: number of items to remove
:returns: probability of removing x items
"""
# p is the probability of removing an item
# sl.choose computes n choose x
return sl.choose(self.n, x) * (self.p**x) * \
(1-self.p)**(self.n-x)
最佳答案
循环可以简化为列表理解:
vals = np.arange(self.n+1)
# array of probability of each value in vals
parr = [self.prob(v) for v in vals]
return np.dot(vals, parr)
关于python - 如何优化numpy调用的数据生成,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41418442/