如何解决根据Python中另一个数组中的值创建和绘制数组
我是一个编程新手,仅几周就一直在更深入地使用Python,但是,我目前需要统计应用程序使用它,我正在尝试执行以下操作:
创建一个从1到 Q = A q 的整数 N 数组(所以 N = [1,2,...,Q-1 ,Q] ),并使用此函数创建和绘制一个数组,其中包含函数P(N)的值,该值对二项式系数求和。 A 和 q 是整数常量( N> q 用作故意的true / false语句)。我目前有以下代码:
#Constants {A,Q,S,sigma} are set
q=Q/A
n = np.linspace(1,dtype=int) #variable array
Sum = np.zeros((1,Q))
Iteration = np.zeros((1,Q))
alpha = 0
while alpha < A:
alpha=alpha+1
Iteration = sigma^alpha * (comb(n-1,alpha-1) -(n>q)*alpha*comb( max(0,n-q-1),alpha-1) )
Sum = Sum + Iteration
这会在type“ Iteration = ...”(可能还有下一行)中返回一个typeError“仅整数整数标量数组可以转换为标量索引”,我无法确切找到问题是如何解决此问题。
也;我可能会以复杂的方式进行求和;如果有更好的方法可以在python中对此进行总结,那么也欢迎为此提供帮助。
在此先感谢您的帮助!
解决方法
问题来自以下行:
Iteration = sigma^alpha * (comb(n-1,alpha-1) -(n>q)*alpha*comb( max(0,n-q-1),alpha-1) )
由于梳子的参数必须是两个非负整数,请参见here,当您传入n(即ndarray)进行梳理时,它将返回您提到的TypeError。
可能您可以将while循环包裹起来并使其成为函数?然后,您可以对其进行迭代并将结果附加到列表中。
def this_fun(n):
Sum = 0
Q = 1000
A = 100
sigma = 1
q = int(Q / A)
alpha = 0
while alpha < A:
alpha = alpha+1
Iteration = sigma^alpha * (comb(n-1,alpha-1) )
Sum += Iteration
return Sum
P_N=[]
N = 100
for i in range(1,N):
P_N.append(this_fun(i))
您必须仔细检查“迭代”行上的逻辑,以确保要实现数学通知的目的,并为Q,A和N设置一些合理的值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。