Sebagai contoh, jika kita memiliki numpy
array A
, dan kami ingin numpy
array B
dengan elemen yang sama.
Apa perbedaan antara berikut (lihat di bawah) metode? Ketika adalah memori tambahan yang dialokasikan, dan kapan tidak?
B = A
B[:] = A
(sama seperti B[:]=A[:]
?)numpy.copy(B, A)
Semua tiga versi yang melakukan hal-hal yang berbeda:
B = A
Ini mengikat sebuah nama baru B
untuk objek yang ada sudah bernama A
. Setelah itu mereka mengacu pada objek yang sama, jadi jika anda mengubah satu di tempat, anda'll melihat perubahan melalui yang lain juga.
B[:] = A
(sama seperti B[:]=A[:]
?)Ini salinan nilai dari A
ke dalam sebuah array yang ada B
. Dua array harus memiliki bentuk yang sama untuk bekerja. B[:] = A[:]
melakukan hal yang sama (tapi B = A[:]
akan melakukan sesuatu yang lebih seperti 1).
numpy.copy(B, A)
Ini bukan hukum sintaks. Anda mungkin berarti B = numpy.copy(A)
. Ini hampir sama dengan 2, tapi itu menciptakan sebuah array baru, daripada menggunakan kembali B
array. Jika tidak ada referensi lain untuk sebelumnya B
nilai, hasil akhirnya akan sama dengan 2, tapi itu akan menggunakan lebih banyak memori untuk sementara selama proses salinan.
Atau mungkin yang anda maksud numpy.copyto(B, A)
, yang merupakan hukum, dan setara dengan 2?
B=A
menciptakan sebuah referensiB[:]=A
membuat salinannumpy.copy(B,A)
membuat salinandua terakhir memerlukan memori tambahan.
Untuk membuat dalam salinan yang anda butuhkan untuk menggunakan B = copy.deepcopy(A)