|
6 / 2 / 0
Регистрация: 28.06.2019
Сообщений: 141
|
|
NumPy, сортировка массива26.05.2020, 15:39. Показов 5448. Ответов 23
Метки нет (Все метки)
Подскажите пожалуйста, как с помощью NumPy мне создать массив не используя циклы , в который попадут все повторяющиеся элементы другого массива, а, остальные расположатся в порядке убывания, чтобы массив не превысил 6(исходный массив длинен)?
Пример1: [604, 546, 546, 75, 14, 8, 6 2, 1, 0, 0] Вывод: [546, 546, 0, 0, 604, 75] Пример2: [604, 546, 546, 546, 375, 375, 141, 73] Вывод: [546, 546, 546, 375,375, 604]
0
|
|
| 26.05.2020, 15:39 | |
|
Ответы с готовыми решениями:
23
NumPY. Выборка элементов из целочисленного массива по схемам |
|
6 / 2 / 0
Регистрация: 28.06.2019
Сообщений: 141
|
||||||
| 27.05.2020, 06:09 [ТС] | ||||||
|
Решил вот таким образом:
0
|
||||||
|
|
||||||
| 27.05.2020, 11:10 | ||||||
|
После bincount надо продолжить тем, что взять counts > 1. Ну а там - по собстоятельствам, я так в итоге и не понял, что нужно, а именно - какие "остальные" и куда денутся повторяющиеся.
Добавлено через 12 минут
1
|
||||||
|
6 / 2 / 0
Регистрация: 28.06.2019
Сообщений: 141
|
||||||
| 28.05.2020, 02:05 [ТС] | ||||||
|
dondublon, Большое спасибо за ответ. Понял что можно не использовать unique. Но все равно не до конца понял как реализовать мою задачу. Пока имею вот такой код:
16, 17, 18, 19, 20, 21, 0], dtype=int64), array([3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int64)) А хочу: [2, 10, 23, 14] [3, 2, 1, 1] Подскажите пожалуйста как это можно сделать. Очень важна скорость этой сортировки.
0
|
||||||
|
|
|
| 28.05.2020, 09:30 | |
|
vpip75pfr3, по поводу задачи - я же объяснил, что задача пока непонятна.
В любом случае, я вам привёл, как отделить повтряющиеся значения от неповторяющихся. А уж с ними вы можете делать что хотите - сортировать, к примеру. Я думаю, все будет вполне быстро.
1
|
|
|
6 / 2 / 0
Регистрация: 28.06.2019
Сообщений: 141
|
|
| 28.05.2020, 22:54 [ТС] | |
|
dondublon, Попробую еще раз объяснить)
На вход поступает массив с цифрами, необходимо вывести 2 массива, в первом вначале идут значения отфильтрованные по наиболее часто встречающихся и по убыванию, а во втором массиве написано какое кол-во раз встречается цифра из первого массива. Ввод: [23, 10, 2, 10, 2, 2, 14] Вывод: [2, 10, 23, 14] [3, 2, 1, 1] Так как двойка встречается чаще чем другие цифры, то она первая. Если бы в массиве было 3- десятки, то в начале шли бы 10, а потом уже 2. В первом моем варианте, все это делается, но очень медленно. В последнем печатаются лишние цифры. К сожалению, из за моего низкого уровня программирования, у меня не получилось воспользоваться Вашим кодом. Буду очень благодарен, если Вы мне поможете с моим.
0
|
|
|
|
||||||||||||||||||||||
| 29.05.2020, 14:38 | ||||||||||||||||||||||
|
По какому признаку фильтровать? Что значит по "наиболее часто встречающихся"? Частота здесь - это доля появлений в массиве или абсолютное число появлений? Напомню, вначале речь шла вообще о повторяемости. На мой взгляд, это значит, что встречается 2 или более раз. По убыванию чего? Частоты? Или самих чисел? В первоначальном вопросе по убыванию требуется отсортировать некие "остальные". Теперь этого нет. Что в итоге сортируем? Если вам надо отсортировать по частоте появления - так и скажите. Это будет элементарная, но понятная задача, которую вы сможете потом дополнить до вашей цели. Добавлено через 12 минут
Добавлено через 2 минуты
Для того, чтобы"слепить" вместе две колонки, используйте np.column_stack. Ну, теперь у вас есть все ингредиенты. Творите ![]() Добавлено через 2 часа 20 минут Порядок операций. 1. Получить частоту каждого числа. См. фрагмент
3. Отсортировать. Для этого во фрагмент
2
|
||||||||||||||||||||||
|
6 / 2 / 0
Регистрация: 28.06.2019
Сообщений: 141
|
|||||||||||
| 29.05.2020, 14:47 [ТС] | |||||||||||
|
dondublon, Вот эта сортировка очень медленная. 3 сек за 100 000 итераций.
Подскажите пожалуйста как из нее убрать лишние цифры.
0
|
|||||||||||
|
|
|
| 29.05.2020, 16:43 | |
|
vpip75pfr3, возможно, в ходе первой идут какие-то преобразования внутри view, я точно не в курсе.
У вас какой тип входного массива? Но если вам нужна двойная сортировка, то деваться особо некуда.
1
|
|
|
6 / 2 / 0
Регистрация: 28.06.2019
Сообщений: 141
|
|
| 29.05.2020, 16:52 [ТС] | |
|
dondublon, Тип массива- <class 'list'>. Если Вы про это)
В целом мой последний вариант работает. Просто меня немного смущает, что по длинному циклу бегает массив, где больше половина значений мне не нужна)
0
|
|
|
6 / 2 / 0
Регистрация: 28.06.2019
Сообщений: 141
|
|
| 30.05.2020, 11:38 [ТС] | |
|
dondublon, Спасибо за помощь!
0
|
|
|
Status 418
|
||||||
| 31.05.2020, 11:29 | ||||||
|
и зачем тут numpy?
1
|
||||||
|
6 / 2 / 0
Регистрация: 28.06.2019
Сообщений: 141
|
|||||||||||
| 31.05.2020, 12:53 [ТС] | |||||||||||
|
eaa, Спасибо, большое за помощь это именно то, что нужно. Только не понимаю, почему у Вас это делается с такой скоростью) У меня с Вашим кодом обрабатывается за 1.19s
0
|
|||||||||||
|
6 / 2 / 0
Регистрация: 28.06.2019
Сообщений: 141
|
|
| 31.05.2020, 14:06 [ТС] | |
|
eaa, Запустил Ваш код в pycharm, ускорение в 4 раза по сравнению с VS.)
Большое спасибо, но все же вариант с numpy чуть быстрее)
0
|
|
|
║XLR8║
|
||
| 31.05.2020, 21:25 | ||
|
vpip75pfr3, внимание, этот вопрос ещё никто не задавал. Какой интервал значений в вашем массиве на 100к элементов? Судя по документации
numpy.bincount
Если у вас задача выучить numpy, тогда, пожалуй, у вас уже есть решение. Но алгоритм такой себе, мягко говоря. Задачу легко сделать простой структурой данных и одним проходом по numpy массиву. Так как в numpy данные занимают меньше памяти и к ним быстрее доступ чем к пинотовским объектам, загонять весь массив в collections.Counter - кощунство, по хорошему, надо его обрезать до нужных размеров и не хранить лишнего.
0
|
||
| 31.05.2020, 21:25 | |
|
Помогаю со студенческими работами здесь
20
Почему стандартный list быстрее массива Numpy?
Векторизация массива в numpy Векторизация массива numpy Сортировка массива каждым из 3 способов (пузырьковая сортировка, сортировка выбором, сортировка вставкой) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во
всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
|