【发布时间】:2017-09-03 01:30:00
【问题描述】:
有人可以看看下面的 Python 函数代码吗?
import numpy as np
import scipy.stats as stats
from scipy.stats import poisson, norm
cs = 100
co = 300
mu = 4.7
G = poisson(mu)
p = G.pmf(np.arange(3*mu))
# Define Z(Q) function
def Z(Q):
for i in range(len(p)):
return sum(p[i]*cs*max((Q-i), 0) + p[i]*co*max((i-Q), 0))
# Plot Q and (Q)
import pylab as pl
x = []
y = []
for Q in range(0, 12):
x.append(Q)
y.append(Z(Q))
pl.plot(x, y, '-o')
pl.show()
错误消息显示在最后一个“绘图”过程中: 在 Z(Q) 中,'numpy.float64' 对象不可迭代。
我希望 Z(Q) 返回的值对范围 (0, len(p)) 中的每个 i 求和,这是一个带有变量 Q 的函数。最后绘图是 Q(X Axis) 和 Z(Q )(Y 轴)可以绘制每个 Q。
如何修改 Z(Q)?谢谢!
如果我想输出 [Q, Z(Q)] 我该怎么做呢?我的代码:
with open('opt.csv', 'wb') as fd:
a = csv.writer(fd, delimiter=',')
data1 = [['Order_Number', 'Cost'],
[Q, Z(Q)]]
a.writerows(data1)
【问题讨论】:
-
请向我们提供完整、准确的错误消息和跟踪信息。
-
提示:考虑一个函数 f 包含行
def f():和<tab>for i in range(10):和<tab><tab>return i。你希望print(f())显示什么?结果可能会让您大吃一惊。 -
@deceze 问题已编辑,谢谢!
-
@Kevin 我的 f() 想返回一个只有变量 Q 的函数,因此对于范围内的每个 i,汇总它们并得到一个 f(Q)
-
@Kevin 对,正如你所说,如果我尝试了你的提示,它有错误:未定义名称'i'。