大家好,我有一个非常简单的问题要问你们,让我简短地解释一下,更详细的解释请见下文。
我想对我的2D数组进行排序,这个数组是一组坐标。 然而,k = np.sort(k,0)对我不起作用,因为它会打乱y值的顺序。我如何解决这个问题而不丢失(x,y)数组中的y值?
在上图中,您可以看到np.sort()的结果。它会对所有列进行排序并打乱值,这使得数据变得无用。
以下是为什么我需要这种排序的更详细解释:
我有一个2D数组,这些是K-means的中心点
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='black', s=200, alpha=0.5);
我想按照它们的x值对这个数组进行排序,因为我想在RBF函数中使用它,像这样:
plt.scatter(centers[:, 0], centers[:, 1], c='black', s=200, alpha=0.5);
rbfi = Rbf(centers[:, 0], centers[:, 1],function='gaussian')
u = rbfi(centers[:,0])
plt.plot(centers[:,0],u,'orange',linewidth=4)
plt.tick_params(labelcolor = 'white')
因为它没有排序,函数会随机取2D点并尝试在它们之间画线。
结果应该看起来像这样:
回答:
我假设您的意思是您希望保持索引不变。如果这个假设正确,我建议使用数据框,并使用“inplace=True”进行排序:
import dataframe as df
df = pd.DataFrame({'x': your_x_numpy_array, 'y': your_y_numpy_array})
df.sort_values(by=[your_index_of_choice],inplace = True)