Как я могу изменить порядок 2D-массива в Python - PullRequest
0 голосов
/ 04 марта 2020

Привет, ребята. У меня к вам очень простой вопрос. Позвольте мне вкратце объяснить, более подробное объяснение читайте ниже.

Я хочу заказать свой двумерный массив, который является массивом координат. Однако k = np.sort (k, 0) у меня не работает, так как вызывает перетасовку значений y. Как я могу решить эту проблему, не теряя мои значения y в массиве (x, y)?

enter image description here

На приведенном выше вы можете увидеть результат из np.sort (). Он сортирует все столбцы и перетасовывает значения, что делает данные бесполезными.

Вот более подробное объяснение, почему мне нужен этот порядок:

У меня есть двумерный массив, являющийся центрами для K-средних

centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='black', s=200, alpha=0.5);

enter image description here

Я хотел бы отсортировать этот массив по их значениям 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')

enter image description here

Так как она не упорядочена, функция случайным образом берет 2D точки и пытается провести линию между ними.

Результат должен выглядеть примерно так :

enter image description here

Ответы [ 2 ]

1 голос
/ 04 марта 2020

Полагаю, вы имеете в виду, что хотите сохранить индекс без изменений. Если это предположение верно, я бы предложил кадр данных, отсортированный по "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)
0 голосов
/ 04 марта 2020

Вот мой ответ, похожий на @ Хейден Иствуд

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()

И результат:

enter image description here

...