4 / 5 / 3
Регистрация: 03.11.2012
Сообщений: 173
|
|||||||||||
1 | |||||||||||
Sum оптимизиция08.04.2018, 15:27. Показов 1460. Ответов 8
Метки нет (Все метки)
Вопрос такой.
Почему код
А тот же код, записанный в виде
Конечно, разница во времени не существенная. Просто не понятно, почему sum медленнее, чем обычный цикл for. И как тогда лучше писать? (там массивы numpy используются, если что)
0
|
08.04.2018, 15:27 | |
Ответы с готовыми решениями:
8
Не работает метод sum() в функции Mixed sum Решение sum задач Map, filter, sum Не удается использовать sum() |
08.04.2018, 16:17 | 2 | |||||
Разница будет существеннее, если порядок чисел будет выше. Скажем сложить миллион чисел.
sum - встроенная функция и написана на Си, потому выполняется в native code. А цикл исполняется интепретатором. Впрочем, реализация sum в numpy многократно эффективнее встроенной.
Код
4999999950000000 Time: 22.531965255737305 4999999950000000 Time: 27.995893001556396 4999999950000000 Time: 0.9900248050689697 Это у вас. У меня sum - быстрее :-) Добавлено через 1 минуту И да - если у вас коде массивы numpy - вы вообще не должны использовать никаких циклов и встроенных функций. Только numpy - только hardcore :-) Иначе все будет медленно.
0
|
4 / 5 / 3
Регистрация: 03.11.2012
Сообщений: 173
|
|
08.04.2018, 16:21 [ТС] | 3 |
почти. там только vw словарь dict. поэтому приходится по индексам суммировать.
0
|
dondublon
|
09.04.2018, 12:12
#5
|
0
|
4 / 5 / 3
Регистрация: 03.11.2012
Сообщений: 173
|
|||||||||||
11.04.2018, 00:10 [ТС] | 6 | ||||||||||
ок, допустим у меня такой код (или что-то похожее). как его переписать без циклов, используя массивы numpy?
0
|
11.04.2018, 01:04 | 7 |
Я не знаю каковы ваши исходные данные. И какой результат вы хотите получить.
Вам стоит присмотреться к numpy функциями имеющим параметр axis - сейчас вы работаете с данными по сути как с 1D-массивом, однако могли бы предоставить работу с осями numpy вместо их перебора. Все функции numpy векторизованы именно для того, чтобы не использовать python циклы вообще.
0
|
4 / 5 / 3
Регистрация: 03.11.2012
Сообщений: 173
|
|||||||||||
11.04.2018, 02:13 [ТС] | 8 | ||||||||||
Короче задача такая: нужно i-ю строку матрицы A сложить c j-той строкой матрицей B. Получится одномерный массив. В нем нужно найти минимальный элемент и его номер (индекс).
В принципе я знаю как это с axis написать
Давайте лучше такая задачка. Как переписать это без циклов:
Точнее как это сделать, не создавая при этом дополнительных матриц.
0
|
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,311
|
||||||
11.04.2018, 04:56 | 9 | |||||
Ну как-то так можно:
0
|
11.04.2018, 04:56 | |
11.04.2018, 04:56 | |
Помогаю со студенческими работами здесь
9
Своя функция sum Задача 7. Продвинутая функция sum sum для других операторов Sum трех квадратов натуральных чисел Вычислить сумму ряда функцией sum TypeError: sum() missing 1 required positional argument: 'arr' Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |