python创建创建数组的问题

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]]