#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