i = 0.8
while i <2:
temp= []
d = np.random.choice([3,i],size = 10, replace=True,p =[0.5,0.5])
temp.append(d)
i+= 0.1
我想要把每次循环创建的数组纵向合并,为什么这个temp只有一个数组出来, 求解答!
因为这是在循环内部创建的变量,作用域仅限于本轮循环,把它放在 i=0.8 的前面,while 循环外面试试。
import numpy as np
i = 0.8
temp = []
while i < 2:
d = np.random.choice([3,i], size = 10, replace=True,p =[0.5,0.5])
temp.append(d)
i += 0.1
print(temp)
结果:
[array([3. , 3. , 0.8, 0.8, 0.8, 3. , 0.8, 0.8, 3. , 0.8]), array([0.9, 0.9, 0.9, 0.9, 3. , 0.9, 3. , 0.9, 0.9, 3. ]), array([3., 3., 3., 3., 1., 3., 1., 3., 1., 3.]), array([1.1, 1.1, 1.1, 1.1, 3. , 1.1, 1.1, 1.1, 1.1, 1.1]), array([1.2, 1.2, 1.2, 1.2, 1.2, 3. , 1.2, 3. , 3. , 1.2]), array([1.3, 3. , 3. , 3. , 3. , 1.3, 3. , 3. , 3. , 1.3]), array([1.4, 1.4, 1.4, 3. , 3. , 1.4, 1.4, 3. , 1.4, 1.4]), array([1.5, 1.5, 3. , 1.5, 1.5, 3. , 1.5, 3. , 3. , 3. ]), array([1.6, 3. , 1.6, 1.6, 3. , 3. , 3. , 1.6, 1.6, 3. ]), array([1.7, 1.7, 1.7, 1.7, 3. , 3. , 3. , 3. , 1.7, 3. ]), array([1.8, 3. , 1.8, 1.8, 3. , 3. , 3. , 1.8, 1.8, 1.8]), array([1.9, 1.9, 3. , 3. , 1.9, 1.9, 1.9, 1.9, 1.9, 3. ])]
i = 0.8
d = np.random.choice([3,i],size = 10, replace=True,p =[0.5,0.5])
while i <2:
temp=np.random.choice([3,i],size = 10, replace=True,p =[0.5,0.5])
d=np.vstack((d,temp))
i+= 0.1
print(d)
[[0.8 0.8 3. 3. 0.8 0.8 3. 0.8 0.8 0.8]
[3. 3. 3. 0.8 3. 0.8 0.8 3. 0.8 3. ]
[0.9 3. 0.9 3. 0.9 0.9 0.9 0.9 3. 0.9]
[1. 3. 3. 3. 3. 1. 3. 1. 1. 1. ]
[3. 3. 3. 3. 1.1 1.1 1.1 1.1 1.1 3. ]
[1.2 1.2 3. 1.2 1.2 1.2 1.2 1.2 1.2 1.2]
[1.3 1.3 3. 3. 3. 3. 3. 3. 1.3 1.3]
[1.4 1.4 3. 3. 3. 3. 3. 3. 1.4 3. ]
[1.5 3. 1.5 3. 3. 1.5 3. 1.5 1.5 1.5]
[1.6 1.6 3. 3. 3. 3. 3. 1.6 3. 1.6]
[3. 3. 1.7 3. 1.7 1.7 1.7 3. 1.7 3. ]
[3. 3. 1.8 3. 1.8 3. 3. 3. 1.8 1.8]
[1.9 3. 3. 1.9 3. 3. 3. 1.9 1.9 1.9]]