我想生成一个包含for循环生成的所有元素的数组。我没有在NumPy手册或stackoverflow中找到任何相关或有用的东西。这是代码中有问题的部分。
import numpy as np
for i in range(0,26):
d = np.random.uniform(i,i+1.75)
empty = np.array([])
all = np.append(empty, d)
print all
我已尝试过追加和连接,它们都只打印25个数组,但只存储到最后一个all
。
非常感谢任何帮助。
答案 0 :(得分:1)
您的all
应该放在循环之外,这样您就可以避免覆盖以前写入的值,并且值应该更新,而不是重新分配给empty
的新附加:
import numpy as np
all = np.array([])
for i in range(0,26):
d = np.random.uniform(i,i+1.75)
all = np.append(all, d)
print all
答案 1 :(得分:1)
@Moses的回答很好,但你可以直接在numpy中实现这一点。 np.random.uniform
也采用大小参数。 See documentation。因此,您的代码可以简化为:
all = np.random.uniform(0, 1.75, size=(26,))
all += np.arange(26)
这里的诀窍是要意识到np.random.uniform(0, 1.75) + 1
与np.random.uniform(1, 2.75)
第二行是考虑循环中的索引。结果将是:
array([ 0.82259558, 1.07737171, 3.56331306, 3.44506941,
5.36435903, 6.43062515, 7.4293016 , 8.62581585,
9.64664137, 10.11875821, 10.04800508, 12.03356491,
13.16818327, 14.12761814, 15.09009053, 15.96770449,
17.0981378 , 17.47152708, 18.15557107, 20.13834956,
21.22972932, 22.15797838, 22.97552168, 23.09385798,
24.17160732, 25.07440533])
这个解决方案可能有点困难,但是当你想要进行更复杂的计算时,这是一个非常强大的模式。如果你不理解,请告诉我。而且,@ Moses的解决方案也是正确的!