#python #arrays #numpy #random
#python #массивы #numpy #Случайный
Вопрос:
Я прохожу курс DataCamp по статистическому мышлению на Python. В какой-то момент курса преподаватель советует инициализировать пустой массив перед заполнением его случайными числами с плавающей запятой, например
rand_nums = np.empty(100_000)
for i in range(100_000):
rand_nums[i] = np.random.random()
Теоретически, есть ли какая-либо причина инициализировать пустой массив перед его заполнением? Экономит ли это память? В чем преимущество приведенного выше кода по сравнению с простым следующим:
rand_nums = np.random.random(size=100_000)
Комментарии:
1. Напротив, инициализация и выборка массива Numpy за один раз, как вы предлагаете, гораздо предпочтительнее, поскольку это будет сделано из кода C. Намного быстрее, чем slooooow циклы Python.
Ответ №1:
Для этого нет абсолютно никакой причины. Второй способ быстрее, читабельнее и семантически корректен.
Кроме того, np.empty
фактически НЕ инициализирует массив — он только выделяет память, но теперь он содержит произвольные данные, оставшиеся в памяти из этой и других программ.
Ответ №2:
Если весь код, который они предоставили, точно такой же, как указано выше, ваш способ инициализации лучше.
Их код может привести к чему-то еще позже
rand_nums = np.empty(100_000)
for i in range(100_000):
rand_nums[i] = np.random.random()
# maybe they will something else in here later with rand_nums[i]