Python 在具有嵌套循环的数组中添加行
我不熟悉编码,并尝试编写一个程序来计算a/B测试中的样本量,Python 在具有嵌套循环的数组中添加行,python,arrays,numpy,Python,Arrays,Numpy,我不熟悉编码,并尝试编写一个程序来计算a/B测试中的样本量,n 我被困在下面主函数中的嵌套循环中。我想创建一个数组,n\u dist\u all,其中有3个不同的行包含n的值,这取决于使用嵌套循环的不同beta值。但是,该函数只是在同一行中添加三个不同beta的值。我正在尝试使用numpy.hstack。我还尝试了连接和附加,但它们都给出了相同的结果 import numpy as np import math import scipy.stats as st def N(alpha, bet
n
我被困在下面主函数中的嵌套循环中。我想创建一个数组,n\u dist\u all
,其中有3个不同的行包含n
的值,这取决于使用嵌套循环的不同beta值。但是,该函数只是在同一行中添加三个不同beta的值。我正在尝试使用numpy.hstack
。我还尝试了连接
和附加
,但它们都给出了相同的结果
import numpy as np
import math
import scipy.stats as st
def N(alpha, beta, delta):
Z_alpha = st.norm.ppf(1-alpha)
Z_beta = st.norm.ppf(1-alpha)
pA = 0.01
pB = pA + delta
qA = 1.0 - pA
qB = 1.0 - qA
n = (((Z_alpha*math.sqrt((pA+pB)*(qA+qB)/float(2)))+(Z_beta*math.sqrt((pA*qA)*(pB*qB))))/(pA-pB))**float(2)
return int(n)
def float_range(start, stop, step):
i = start
while i < (stop + step):
yield i
i += step
def main():
n_dist_all = np.array([])
beta_1 = 0.2
beta_2 = 0.1
beta_3 = 0.05
beta_group = [beta_1, beta_2, beta_3]
alpha = 0.05
for beta in beta_group:
n_dist = np.array([])
for delta in float_range(0.001,0.03,0.0005):
n_dist = np.append(n_dist, N(alpha, beta, delta))
n_dist_all = np.hstack((n_dist_all, n_dist))
n_dist = []
print n_dist_all
if __name__ == "__main__":
main()
将numpy导入为np
输入数学
将scipy.stats导入为st
def N(α、β、δ):
Z_alpha=st.norm.ppf(1-alpha)
Z_β=st.norm.ppf(1-α)
pA=0.01
pB=pA+delta
qA=1.0-帕
qB=1.0-质量保证
n=((Z_alpha*math.sqrt((pA+pB)*(qA+qB)/float(2))+(Z_alpha*math.sqrt((pA*qA)*(pB*qB))/(pA-pB))**float(2)
返回整数(n)
def浮动范围(启动、停止、步进):
i=开始
当我<(停止+步进):
产量一
i+=阶跃
def main():
n_dist_all=np.array([])
β1=0.2
β2=0.1
β_3=0.05
beta_组=[beta_1,beta_2,beta_3]
α=0.05
对于beta_组中的beta:
n_dist=np.array([])
对于浮动范围内的增量(0.001,0.03,0.0005):
n_dist=np.append(n_dist,n(alpha,beta,delta))
n_dist_all=np.hstack((n_dist_all,n_dist))
n_dist=[]
打印n_dist_all
如果名称=“\uuuuu main\uuuuuuuu”:
main()
从python程序将hstack()更改为vstack()。下面的例子
a = np.array([1,2,3])
b = np.array([4,5,6])
c = np.array([7,8,9])
np.vstack((a,b,c)) # This give the following array
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
谢谢你,宋。vstack将每个值放在不同的行中,使用vstack对我的代码稍加修改就可以解决我的问题。然而,我现在使用列表列表代替,并得到了解决方案。