Хранение данных в массиве NumPy во время цикла

#python #numpy

#python #numpy

Вопрос:

Хранение данных в массиве NumPy во время цикла

Я хочу сохранить 3 переменные (время, скорость, положение) в массиве NumPy. Процесс хранения должен добавлять новое значение каждый раз, когда цикл завершен. Цикл учитывает время, а скорость и позиции являются функциями этого времени. Я мог бы сделать это с помощью списка, однако, согласно тому, что я видел в руководстве, массивы Numpy более эффективны для больших данных, что является моим случаем. Мой вопрос в том, как я могу это сделать, используя массив. Я подумал, что, возможно, использование append могло бы выполнить эту работу, но проблема в том, что append создает новый массив NumPy вместо простого добавления значений. Также, насколько я знаю, NumPy не изменяется по размеру. Поэтому каждый раз, когда я добавляю другую ось, будут создаваться другие массивы, которые могут быть неэффективными. Есть предложения по этому вопросу?

 duration = 3600
time = 0
data= np.array([s(t)], [x(t)], [t])
while time <= duration:
   function_speed = s(t)
   function_position = x(t)
   data = add values (s, x, t)
   time  =1 
  

Я подумал, может быть, создать большой массив, а затем соответствующим образом заменить каждое значение. Спасибо за любые отзывы.

Комментарии:

1. Придерживайтесь добавления списка или присваивайте значения в предварительно выделенном массиве. Время примерно такое же.

Ответ №1:

Зная, что ваша программа будет выполняться для определенного duration времени, вы можете предварительно выделить необходимое пространство, используя np.empty:

 duration = 3600
time = 0
data = np.empty(shape=(duration 2, 3))  # duration   time at 0   final iteration
data[0] = s(t), x(t), t
while time <= duration:
    ...
    data[time 1] = s(t), x(t), t
    time  = 1