#python #numpy
#python #numpy
Вопрос:
У меня есть массив numpy, который начинается с пустого и в течение цикла должен получать несколько записей, хотя я не знаю, сколько записей будет до выполнения.
Я пробовал разные вещи с переменным успехом, и в настоящее время мой код выглядит примерно так:
pi = np.empty((0))
for...
if...
np.concatenate([pi, np.array([0])]) # supposed to ad a new column with entry '0'
Однако print(pi)
возвращает []
Я подозреваю, что в этом могут быть виноваты мои ограниченные знания numpy, хотя я не могу обнаружить никаких очевидных ошибок.
Кроме того, поскольку мне нужно работать со значениями в массиве внутри цикла, я, к сожалению, не могу дождаться его инициализации до завершения цикла
Комментарии:
1. Вы должны присвоить результат
np.concatenate
topi
.2. Не пытайтесь имитировать список
[]
иappend
с массивами! Как вы обнаружили, он подвержен ошибкам, а также медленный.3. Keepi
concatenate
создает новый массив, копируя значения во входные массивы. По мере роста объем копирования растет. Списокappend
работает на месте, просто добавляя ссылку на список. Это проще и быстрее.
Ответ №1:
Вы не присваиваете новый массив pi.
pi = np.empty((0))
for...
if...
pi = np.concatenate([pi, np.array([0])])