Назначение массива 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?