在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作为列表追加。他们都没有工作。知道如何获得以前的输出吗?
答案 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:
也就是说,反复使用连接可能代价高昂。如果你知道的话 提前输出的大小最好预先分配一个数组和 在你走的时候填写它。