将for循环生成的元素追加到数组中

时间:2016-06-18 12:36:01

标签: 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个数组,但只存储到最后一个all

非常感谢任何帮助。

2 个答案:

答案 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) + 1np.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的解决方案也是正确的!