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