Назначение массива Numpy с копией
например, если у нас есть массив numpy A
, и мы хотим массив numpy B
с теми же самыми элементами.
в чем разница между этими методами? Когда выделяется дополнительная память, а когда нет?
B = A
-
B[:] = A
(то же самое, чтоB[:]=A[:]
?) numpy.copy(B, A)
3 ответа:
все три версии делают разные вещи.
это связывает новое имя
B
к существующему объекту уже с именемA
. Впоследствии они ссылаются на один и тот же объект, поэтому, если вы измените один на месте, вы увидите изменение и через другой.это копирует значения из
A
в существующий массивB
. Для этого два массива должны иметь одинаковую форму.B[:] = A[:]
делает то же самое (ноB = A[:]
сделал бы что-то вроде 1).это не правовой синтаксис. Ты наверное имел ввиду
B = numpy.copy(A)
. Это почти то же самое, что и 2, но он создает новый массив, а не повторное использованиеB
массив. Если бы не было других ссылок на предыдущийB
значение, конечный результат будет таким же, как 2, но он будет использовать больше памяти временно во время копирования.Edit: или, может быть, вы имели в виду
numpy.copyto(B, A)
, которое является законным и эквивалентно 2?