繁体   English   中英

如何在 Python 中更改 2D 数组的顺序

[英]How can I change the order of a 2D Array in Python

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

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

在此处输入图片说明

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

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

我有一个二维数组,它是 K 均值的中心

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)

这是我的答案类似于@Hayden Eastwood

import pandas as pd
df = pd.DataFrame({'x': centers[:,0], 'y': centers[:,1]})
df = df.sort_values(by='x')
centers = pd.DataFrame(df).to_numpy()

结果:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM