Зачем инициализировать массив в Numpy

#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]