Отзывы пользователей о вопросе верны: массивы numpy отличаются от списков Python, поэтому метод добавления numpy часто не является хорошим выбором. Это может быть особенно сложно при попытке добавить к массиву numpy быстро. Метод append для массива numpy возвращает копию массива с добавленными в конец новыми элементами. This answer имеет большой список предложений по методам Numpy, которые можно использовать для этого, и справедливо упоминает, что лучший способ сделать это - сначала выделить массив с его окончательным размером. Для случаев, когда (1) Я не знаю, что окончательный размер массива должен быть и (2), мне нужно более высокую производительность, которую я часто использую,
a.resize(np.size(a) + 1, refcheck=False)
a[-1] = foo
где a
является Numpy массив. Осторожно! a.resize
- это не то же самое, что и np.resize(a, ...)
. Если размер массива можно изменить без его перемещения, эта операция выполняется быстро. Поскольку массив может быть перемещен путем изменения размера, ссылки на массив (например, выполнение b = a
перед изменением размера) не будут безопасными после изменения размера. Обычно я устанавливаю refcheck=False
, но затем я не буду использовать какие-либо массивы, которые могли бы ссылаться на a
перед изменением размера.
Если вы не беспокоитесь о памяти, вы можете создать нечто вроде 'a = numpy.zeros (10000)', заполнить это нумерами, которые вы хотите по ходу дела, и когда вы закончите «добавление» своего ' N' для этого массива, выполните 'a = a [: N]'. Затем вы будете делать только одну копию вместо копий «N». Конечно, выберите размер начального пустого массива, который будет больше, чем вы ожидаете от 'N'. – SethMMorton
numpy использует фиксированный (и точный) массив. добавление к такому массиву всегда o (n) – njzk2