Рассмотрим следующий numpy
код:
A[start:end] = B[mask]
Здесь:
A
и B
- это 2D-массивы с одинаковым количеством столбцов; start
и end
- скаляры; маска
- одномерный логический массив; (end - start) == sum ( mask)
. В принципе, описанная выше операция может быть выполнена с использованием O (1)
временного хранилища, путем копирования элементов B
непосредственно в A
.
Это то, что на самом деле происходит на практике, или numpy
создает временный массив для B [mask]
? Если последнее, есть ли способ избежать это путем переписывания оператора?