python - 在 Python 中创建和绘制一个数组作为另一个数组中值的函数
问题描述
我是一个编程菜鸟,我只是在几周内更密集地使用 Python,但是,我目前需要它用于统计应用程序,我正在尝试执行以下操作:
创建一个从 1 到Q=A q的整数N数组(因此N=[1,2,...,Q-1,Q] ),并使用它来创建和绘制一个包含函数P值的数组(N)对二项式系数求和。A和q是整数常量(N>q故意作为真/假语句在那里)。我目前有以下代码:
#Constants {A,Q,S,sigma} are set
q=Q/A
n = np.linspace(1,Q,Q,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
这会在“Iteration=...”行(也可能在下一行)中返回一个 typeError“只有整数标量数组可以转换为标量索引”,我无法找出问题到底是什么以及如何解决这个问题。
还; 我可能会以一种复杂的方式进行求和;如果有更好的方法在 python 中总结这一点,也欢迎为此提供帮助。
提前感谢您的帮助!
解决方案
问题来自以下行:
Iteration = sigma^alpha * (comb(n-1,alpha-1) -(n>q)*alpha*comb( max(0,n-q-1), alpha-1) )
由于comb 的参数必须是两个非负整数,请参见此处,当您传入n(一个ndarray)时,comb 将返回您提到的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) -(n>q)*alpha*comb( max(0,n-q-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 输入一些合理的值。
推荐阅读
- css - Vue 动态样式绑定不具有计算属性
- wordpress - 将 Woocommerce REST API 与 WP-API 的 JWT 身份验证一起使用时,无法获得超过 12 个结果
- html - Bootstrap 4 文本输入 ID
- json - 使用数据工厂将原始 JSON 加载到 Azure SQL 中的单行
- javascript - 将函数传递给 ReactNative 中的 TextInput defaultValue
- java - 从 CommonsTransportHeaders 获取所有标题
- asp.net-core - 实体框架核心延迟/急切加载
- android - kotlin SocketTimeoutException:10000 毫秒后无法从 /192.168.0.66(端口 35314)连接到 /10.0.2.2(端口 3000)
- python - Python,Dijkstra 的算法可视化
- javascript - 从响应标头角度获取 set-cookie 值