У меня есть два массива данных, в массиве 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. Дополнительные две строки не затрагиваются, потому что они не могут быть сопоставлены ни с чем и остаются внизу массива.
Может быть, вы могли бы привести упрощенный пример, чтобы понять, что вы хотите делать? Например, используя только два массива по 10 и 7 элементов каждый, показывая желаемый результат
@ Даниэле извините за путаницу. Первые три столбца содержат одинаковые данные, но в одном их больше, чем в другом. Это похоже на массив с 1 по 5, а затем с другим массивом с 1 по 10. Первый массив (от 1 до 5) имеет те же данные, что и в другом массиве.






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