所以我有一个返回 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 的数组)?
答案 0 :(得分:0)
试着像这样改变:
arr = [position(0,100) for _ in range(1000)]
您将获得带有元组的 arr
:
print(arr[:2])
输出:
[(94.38888058610041, 82.97455003388289, 56.356363837769564),
(28.925535522819914, 62.10586090326522, 3.7630479522948956)]
答案 1 :(得分:0)
这里你想要的是 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)]))