Вот задание:
Создайте матрицу размером (20, 20) все столбцы которой одинаковые и состоят из значений от 0 до 100 с шагом 5
Результат запишите в переменную mat_A.
Примечание: импортировать библиотеку Numpy не нужно, она уже импортирована.
Я делала такое же только со строками и получилось так, как на коде: mat_A = np.tile(np.arange(0, 100, 5), (20,1))
А со столбцами по такому же принципу, если поменять на (1,20) не получается.
Что не так?
U235U235, Моё решение в тесте отрабатывает в три раза быстрее:
import numpy as np
import timeit
# решение с mgrid
def solution_mgrid():
mat_A, _ = np.mgrid[0:100:5, 0:100:5]
return mat_A.T
# решение с tile
def solution_tile():
col_vector = np.arange(0, 100, 5).reshape(-1, 1)
return np.tile(col_vector, (1, 20))
# Количество повторений
iterations = 100000
# Замер времени для первого решения
time_mgrid = timeit.timeit(solution_mgrid, number=iterations)
# Замер времени для второго решения
time_tile = timeit.timeit(solution_tile, number=iterations)
print(f'Time for mgrid solution: {time_mgrid:.6f} seconds')
print(f'Time for tile solution: {time_tile:.6f} seconds')
Результат:
Time for mgrid solution: 1.846957 seconds
Time for tile solution: 0.569512 seconds
black1277, ты даже не понял, что результат в моем случае будет mat_A, а не mat_A.T.
И я не использую GPT, в отличие от тебя.
Измерять скорость создания для матриц 20х20 глупо.
U235U235, ну если голова маленькая - в неё вообще мало что может прийти. Для меня .reshape(-1, 1) более очевиден, так как перегнать строку в столбец проще, чем транспонировать матрицу, особенно с увеличением размерности.