首页 > 解决方案 > 如何在 Python 中更改二维数组的顺序

问题描述

大家好,我有一个非常简单的问题要问你,让我简要解释一下,更详细的解释请阅读下文。

我想订购我的二维数组,它是一个坐标数组。但是 k= np.sort(k,0) 对我不起作用,因为它会导致 y 值的洗牌。如何在不丢失 (x,y) 数组中的 y 值的情况下解决这个问题?

在此处输入图像描述

在上面你可以看到 np.sort() 的结果。它对所有列进行排序并打乱值,这使得数据无用。

这是我需要该订单的更长解释:

我有一个二维数组,它是 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 点并尝试在它们之间画一条线。

结果应如下所示:

在此处输入图像描述

标签: pythonarrayssortingmachine-learningdata-science

解决方案


我假设您的意思是要保持索引不变。如果这个假设是正确的,我会建议一个数据框,用“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)

推荐阅读