Numpy конкатенация занимает слишком много памяти. Есть ли более эффективный способ?

#python #numpy #memory-management

#python #numpy #управление памятью

Вопрос:

У меня есть два NumPy-массива, A и B.

A имеет форму (1000000, 512), а B имеет форму (1000000, 4) Я пытаюсь объединить их, чтобы получить массив формы (1000000, 516).

Моя проблема в том np.concatenate([A, B], axis=1) , что по какой-то причине занимает слишком много памяти. Проверяя использование моей памяти, A и B занимают примерно 5 ГБ (вместе), но когда я запускаю конкатенацию, использование моей оперативной памяти увеличивается примерно на 16 ГБ.

Почему это происходит? Есть ли более эффективный способ выполнения этой операции для больших массивов?

Я пытался выполнять конкатенацию пакетами, но это не очень помогает, и кажется, что память не освобождается между итерациями.

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

1. Можете ли вы проверить dtype обоих массивов?

2. Оба массива имеют dtype ‘0’

3. @mikksu Я изменил тип на float, и это резко сократило потребление памяти и практически решило мою проблему 🙂 Спасибо, это заняло у меня так много времени.