numpy: логическое индексирование и использование памяти

Рассмотрим следующий numpy код:

A[start:end] = B[mask]

Здесь:

  • A и B - это 2D-массивы с одинаковым количеством столбцов;
  • start и end - скаляры;
  • маска - одномерный логический массив;
  • (end - start) == sum ( mask) .

В принципе, описанная выше операция может быть выполнена с использованием O (1) временного хранилища, путем копирования элементов B непосредственно в A .

Это то, что на самом деле происходит на практике, или numpy создает временный массив для B [mask] ? Если последнее, есть ли способ избежать это путем переписывания оператора?

7
задан Community 22 September 2017 в 17:44
поделиться