使用初始空数组附加循环中生成的数组的问题

the issues of appending arrays generated in the loop with initial empty array

我有下面的代码,目的是连接一个循环中生成的数组,并在进入循环之前初始化一个空数组。出于说明目的,我只是让循环只有一次迭代。但是,我发现 result_array 仍然包含初始的空数组。我不清楚如何解决这个问题,是否可以在不设置初始空数组的情况下附加循环内生成的数组?为了重现问题,我包括 运行.

的代码和屏幕截图
import numpy as np
import hdmedians as hd
x = np.random.rand(5,10,2)
result_array = np.empty((1,2),float)
for i in range(1):#x.shape[1]):
    print('i----',i)
    x1 = x[:,i,:]
    print(x1)
    x2 = hd.medoid(x1,axis=0)    
    x2 = x2.reshape((1,2))
    print(x2)
    print('---------')
    result_array = np.append(result_array, x2, axis =0 )

我不知道 hdmedians 的 API,所以我真的不能建议矢量代码(如果可能),但你可以在循环中替换你的 append(即效率低下)与:

np.vstack([hd.medoid(x[:,i,:], axis=0)
           for i in range(x.shape[1])])

输出:

array([[0.3595079 , 0.43703195],
       [0.60276338, 0.54488318],
       [0.4236548 , 0.64589411],
       [0.52324805, 0.09394051],
       [0.52184832, 0.41466194],
       [0.57019677, 0.43860151],
       [0.45615033, 0.56843395],
       [0.20887676, 0.16130952],
       [0.65310833, 0.2532916 ],
       [0.46631077, 0.24442559]])