所以我有一个返回3个变量的函数,如果有意义的话,我想使用for循环来获得每个变量的数组。这就是我到目前为止的情况,我得到了错误:
ValueError:太多的值无法解压缩(应为3(
Import numpy as np
def position(min, max):
x=np.random.uniform(min,max)
y=np.random.uniform(min,max)
z=np.random.uniform(min,max)
return x,y,z
x,y,z=[position(0,100) for _ in range(1000)]
请注意,我不能在函数本身中移动循环,因为我需要能够调用函数来生成单个值。有没有一个函数可以用来实现我想要的(3个维度为1000的数组(?
您想要的是zip
生成的数组:
x, y, z = zip(*[position(0,100) for _ in range(1000)])
但这会给你3个元组。如果你想要numpy数组,你必须明确地转换它们:
x, y, z = (np.array(i) for i in zip(*[position(0,100) for _ in range(1000)]))
尝试这样更改:
arr = [position(0,100) for _ in range(1000)]
您将获得带有元组的arr
:
print(arr[:2])
输出:
[(94.38888058610041, 82.97455003388289, 56.356363837769564),
(28.925535522819914, 62.10586090326522, 3.7630479522948956)]