Python 将for循环生成的元素追加到数组中
我想生成一个数组,其中包含for循环生成的所有元素。我在NumPy手册或stackoverflow中没有发现任何相关或有用的内容。这是代码中有问题的部分Python 将for循环生成的元素追加到数组中,python,arrays,python-2.7,numpy,for-loop,Python,Arrays,Python 2.7,Numpy,For Loop,我想生成一个数组,其中包含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个数组,但只存
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个数组,但只存储到最后一个数组
任何帮助都将不胜感激。您的
所有
都应该放在循环之外,这样您就可以避免覆盖以前写入的值,并且应该更新该值,而不是将其重新分配给一个新的附加空
:
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
@摩西的回答很好,但你可以在努比直接做到这一点
np.random.uniform
还接受一个大小参数。因此,您的代码可以简化为:
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])
这个解决方案可能有点难理解,但当你想做更复杂的计算时,它是一个非常强大的模式。如果你不明白,请告诉我。而且,@摩西的解决方案也是正确的 @nikjohn您还应该将
打印所有
放在循环之外