Сортировка массива строк в соответствии с порядком другого массива с использованием первого столбца

У меня есть два массива данных, в массиве A 4 столбца и около 59 000 строк, в массиве B 24 столбца и около 45 000 строк. Первые 3 столбца массива A содержат те же данные, что и первые 3 столбца массива B, но в другом порядке. Я хочу переупорядочить каждую строку массива A по массиву B, используя первый столбец. Я нахожу ответы, но только для массивов одинаковой длины. Я не могу найти ответа для массивов разной длины.

Я нашел один ответ здесь, но продолжал получать ошибку: «Слишком много индексов для массива». Эта ошибка возникла бы в первой строке ответа sidx = A[:,0].argsort(). Я не уверен, как бы это исправить.

Я не уверен, полезно это или нет, но первый столбец обоих массивов - целые числа. Все остальное плавает. Если есть какое-то решение этой ошибки или другой тип решения проблемы, с которой я столкнулся, любая помощь будет очень признательна!

Вот как выглядят оба массива.

In: arrayA
Out: array([(8846,  73.00, 57.56, 1.),
   (4814, 347.21, 56.61, 0.),
   (2779,  72.14 , 57.34, 0.),
   (1439,  30.24, 64.81, 1.),
   (3677,  85.50, 31.85, 1.),
   (9777, 199.95, 50.46, 1.)])
In: arrayB
Out: array([(2779,  72.14 , 57.34, 17.165, 0.005, 1.329, 19.745, 0.031),
   (9777, 199.95, 50.46, 15.19, 0.002, 0.019, 19.193, 0.023),
   (8846, 73.00, 57.56, 14.21, 0.002, 1.754, 16.918, 0.007),
   (3677, 85.50, 31.85, 20.1, 0.073, 2.394, 23.976, 1.091, 4.441)])

Я хочу, чтобы конечный продукт был отсортированной версией массива A, чтобы каждый индекс A соответствовал каждому индексу массива B

In: arrayA_sorted
Out: array([(2779,  72.14 , 57.34, 0.),
   (9777, 199.95, 50.46, 1.),
   (8846, 73.00, 57.56, 1.),
   (3677,  85.50, 31.85, 1.),
   (4814, 347.21, 56.61, 0.),
   (1439,  30.24, 64.81, 1.)])

Здесь первые три столбца индексов от 0 до 3 массиваA_sorted соответствуют первым трем столбцам массива B. Дополнительные две строки не затрагиваются, потому что они не могут быть сопоставлены ни с чем и остаются внизу массива.

Как могут два столбца (первый из массивов A и B) иметь одинаковые данные, если они имеют разную длину?

Daniele 20.09.2018 23:59

Может быть, вы могли бы привести упрощенный пример, чтобы понять, что вы хотите делать? Например, используя только два массива по 10 и 7 элементов каждый, показывая желаемый результат

Daniele 21.09.2018 00:02

@ Даниэле извините за путаницу. Первые три столбца содержат одинаковые данные, но в одном их больше, чем в другом. Это похоже на массив с 1 по 5, а затем с другим массивом с 1 по 10. Первый массив (от 1 до 5) имеет те же данные, что и в другом массиве.

Brandon Lazo 21.09.2018 17:13
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
45
0

Другие вопросы по теме