使用初始空数组附加循环中生成的数组的问题
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]])
我有下面的代码,目的是连接一个循环中生成的数组,并在进入循环之前初始化一个空数组。出于说明目的,我只是让循环只有一次迭代。但是,我发现 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]])