for循环后不能附加numpy数组吗?

时间:2017-11-05 14:37:00

标签: python arrays python-3.x loops numpy

在for循环之后,我无法将每次迭代附加到单个数组中:

在:

for a in l:
arr = np.asarray(a_lis)
print(arr)

如何在单个数组中追加并返回上述三个数组?:

   [[ 0.55133  0.58122  0.66129032  0.67562724  0.69354839  0.70609319
      0.6702509   0.63799283  0.61827957  0.6155914   0.60842294  0.60215054
      0.59946237  0.625448  0.60215054  0.60304659  0.59856631  0.59677419
      0.59408602  0.61021505]
    [ 0.58691756  0.6784946  0.64964158  0.66397849  0.67114695  0.66935484
      0.67293907  0.66845878  0.65143369  0.640681    0.63530466  0.6344086
      0.6281362   0.6281362   0.62634409  0.6281362   0.62903226  0.63799283
      0.63709677  0.6978495]
    [ 0.505018  0.53405018  0.59408602  0.65143369  0.66577061  0.66487455
      0.65412186  0.64964158  0.64157706  0.63082437  0.62634409  0.6218638
      0.62007168  0.6648746  0.62096774  0.62007168  0.62096774  0.62007168
      0.62275986  0.81362 ]]

我尝试使用numpy的追加,合并和hstack作为列表追加。他们都没有工作。知道如何获得以前的输出吗?

1 个答案:

答案 0 :(得分:2)

使用numpy.concatenate加入数组:

import numpy as np

a = np.array([[1, 2, 3, 4]])
b = np.array([[5, 6, 7, 8]])

arr = np.concatenate((a, b), axis=0)
print(arr)
# [[1 2 3 4]
#  [5 6 7 8]]

编辑1:要在数组中执行此操作(如comment中所述),您可以使用numpy.vstack

import numpy as np

for i in range(0, 3):
    a = np.random.randint(0, 10, size=4)
    if i == 0:
        arr = a
    else:
        arr = np.vstack((arr, a))

print(arr)
# [[1 1 8 7]
#  [2 4 9 1]
#  [8 4 7 5]]

编辑2:从评论中引用Iguananaut

  

也就是说,反复使用连接可能代价高昂。如果你知道的话   提前输出的大小最好预先分配一个数组和   在你走的时候填写它。