Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 01.04.2019
Сообщений: 5

Алгоритм определения значения минимального элемента в матрице

19.12.2019, 19:36. Показов 1161. Ответов 9

Студворк — интернет-сервис помощи студентам
Написать программу, реализующую алгоритм определения значения минимального элемента в матрице с использованием list, замерить время выполнения и сравнить с готовой реализацией алгоритма из библиотеки NumPy.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.12.2019, 19:36
Ответы с готовыми решениями:

Составить алгоритм определения суммы минимального элемента и первого элемента массива от 1 до 5 на HTML
Составить алгоритм определения суммы минимального элемента и первого элемента массива от 1 до 5 на HTML

Построить алгоритм определения минимального элемента и его индекса в одномерном массиве
Построить алгоритм определения минимального элемента и его индекса в одномерном массиве.

Построить и записать алгоритм определения минимального элемента и его индекса в столбцах матрицы
Всем добрый день! Я с просьбой! Задание: построить и записать алгоритм определения минимального элемента и его индекса в столбцах...

9
55 / 40 / 18
Регистрация: 16.12.2019
Сообщений: 149
20.12.2019, 10:26
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from numpy import amin, random
from timeit import default_timer as timer
 
 
def run_time(function, a):
    t = timer()
    r = function(a)
    time = timer() - t
    print(f"{function.__name__}, result: {r}, time: {time:.10f} seconds")
 
def bmin(a):
    return min([min(row) for row in a])
 
 
n = 1000
a = [[random.randint(-n, n) for _ in range(n)] for _ in range(n)]
 
run_time(amin, a)
run_time(bmin, a)
PS. Интересный результат...
amin, result: -1000, time: 0.0890608830 seconds
bmin, result: -1000, time: 0.0331347970 seconds
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
20.12.2019, 11:15
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import random
import numpy as np
 
 
def bmin(a):
    return min([min(row) for row in a])
 
 
n = 1000
a = [[random.randint(-n, n) for _ in range(n)] for _ in range(n)]
 
import timeit
print(timeit.timeit('np.amin(a)', 
  setup='import numpy as np; from __main__ import a', number=10))
print(timeit.timeit('np.amin(a)', 
  setup='import numpy as np; from __main__ import a; a = np.array(a)', number=10))
print(timeit.timeit('bmin(a)', 
  setup='from __main__ import bmin, a', number=10))
 
#0.9073198139667511
#0.007684736978262663
#0.24830129405017942
np.array естественно выигрывает в скорости.

Добавлено через 22 минуты
Похожая тема: Почему стандартный list быстрее массива Numpy?
1
55 / 40 / 18
Регистрация: 16.12.2019
Сообщений: 149
20.12.2019, 11:17
Рыжий Лис,
Спасибо. - Исправил, хотя условие об этом умалчивает...
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from numpy import amin, array, random
from timeit import default_timer as timer
 
 
def run_time(function, a):
    t = timer()
    r = function(a)
    time = timer() - t
    print(f"{function.__name__}, result: {r}, time: {time:.10f} seconds")
 
def bmin(a):
    return min([min(row) for row in a])
 
 
n = 1000
a = [[random.randint(-n, n) for _ in range(n)] for _ in range(n)]
 
run_time(amin, array(a))
run_time(bmin, a)
amin, result: -1000, time: 0.0014144650 seconds
bmin, result: -1000, time: 0.0215855130 seconds
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
20.12.2019, 11:24
Запускай хотя бы три раза каждую функцию, чтобы усреднить разброс замеров времени.
0
55 / 40 / 18
Регистрация: 16.12.2019
Сообщений: 149
20.12.2019, 11:40
Рыжий Лис,
В данное случае, что запустить 10 раз, что добавить 0 к "n = 1000" - не вижу принципиальной разницы.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
20.12.2019, 11:48
Разница есть. Даже две:

1) размерность матрицы записана как https://www.cyberforum.ru/cgi-bin/latex.cgi?n^2. При увеличении n в десять раз, размер её увеличится в 100 раз!

2) время работы функции фактически случайное число. Повторное проведение измерений позволяет усреднить значение и статистически вычислить погрешность измерений.
0
55 / 40 / 18
Регистрация: 16.12.2019
Сообщений: 149
20.12.2019, 12:00
Рыжий Лис,
1. Речь идет о принципиальной разнице, лишний 0 - всего лишь примера, как увеличить время выполнения.
2. "Время работы функции фактически случайное число" только потому, что ей мешают другие процессы. И, IMHO, что вы запускаете функцию N раз на малых наборах данных, что соответственно увеличиваете набор данных - погрешность измерений будет практически одинаковой.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
20.12.2019, 12:21
2) одиночный замер - это всё равно случайное число. Хотя согласен, что увеличение входных данных - а следовательно и времени выполнения повышает воспроизводимость результатов (слева n=300, справа n=1000. 10 замеров для каждого):
0
55 / 40 / 18
Регистрация: 16.12.2019
Сообщений: 149
20.12.2019, 13:58
Рыжий Лис,
Потестировал оба варианта...

На Win10 можно получить такой результат:
стандартное отклонение времени bmin на больших данных: [1000 * 1000]
0.0001106629
стандартное отклонение времени аmin на больших данных: [1000 * 1000]
0.0000187313
стандартное отклонение времени bmin на малых данных: [100 * 100] * 100 раз
0.0006204650
стандартное отклонение времени аmin на малых данных: [100 * 100] * 100 раз
0.0000317176

А можно и такой:
стандартное отклонение времени bmin на больших данных: [1000 * 1000]
0.0010734151
стандартное отклонение времени аmin на больших данных: [1000 * 1000]
0.0000847839
стандартное отклонение времени bmin на малых данных: [100 * 100] * 100 раз
0.0004003994
стандартное отклонение времени аmin на малых данных: [100 * 100] * 100 раз
0.0001038409

Т.о. для точных измерений либо должна быть "другая" ОС, либо измерения должны проводиться часами...
Кликните здесь для просмотра всего текста

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
from numpy import amin, array, mean, random
from statistics import stdev
from timeit import default_timer as timer
 
 
def run_time(function, a):
    t = timer()
    r = function(a)
    time = timer() - t
    return(time)
 
def bmin(a):
    return min([min(row) for row in a])
 
 
k = 100
 
# big data
x = [0] * k
y = [0] * k
n = 1000
a = [[random.randint(-n, n) for _ in range(n)] for _ in range(n)]
m = array(a)
 
for z in range(k):
    x[z] = run_time(bmin, a)
    y[z] = run_time(amin, m)
    
print('стандартное отклонение времени bmin на больших данных: [1000 * 1000]')
print(f'{stdev(x):.10f}')
print('стандартное отклонение времени аmin на больших данных: [1000 * 1000]')
print(f'{stdev(y):.10f}')
 
# small data
x = [0] * k
y = [0] * k
n = 100
a = [[random.randint(-n, n) for _ in range(n)] for _ in range(n)]
m = array(a)
 
for z in range(k):
    i = j = 0
    for _ in range(99):
        i += run_time(bmin, a)
        j += run_time(amin, m)
    x[z] = i
    y[z] = j
    
print('стандартное отклонение времени bmin на малых данных: [100 * 100] * 100 раз')
print(f'{stdev(x):.10f}')
print('стандартное отклонение времени аmin на малых данных: [100 * 100] * 100 раз')
print(f'{stdev(y):.10f}')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.12.2019, 13:58
Помогаю со студенческими работами здесь

Написать программу определения минимального значения элемента массива разного типа
2).Используя перегрузку функций, написать программу определения минимального значения элемента массива разного типа

Используя перегрузку функций, написать программу определения минимального значения элемента массива
Добрый день, подскажите, пожалуйста! ) Используя перегрузку функций, написать программу определения минимального значения элемента...

Составить алгоритм решения задачи для определения максимального и минимального значения из двух различных вещественных
8. Составить алгоритм решения задачи для определения максимального и минимального значения из двух различных вещественных чисел.

Используя перегрузку функции ,написать программу определения минимального значения элемента массива разного типа
Используя перегрузку функции ,написать программу определения минимального значения элемента массива разного типа

Массив: Используя перегрузку функций, написать программу определения минимального значения элемента массива разного типа
Используя перегрузку функций, написать программу определения минимального значения элемента массива разного типа


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru