NumPy - Salinan & Tampilan
Saat menjalankan fungsi, beberapa di antaranya mengembalikan salinan larik input, sementara beberapa mengembalikan tampilan. Ketika konten disimpan secara fisik di lokasi lain, itu disebutCopy. Jika di sisi lain, tampilan berbeda dari konten memori yang sama disediakan, kami menyebutnya sebagaiView.
Tanpa Salinan
Tugas sederhana tidak membuat salinan objek array. Sebaliknya, ia menggunakan id () yang sama dari larik asli untuk mengaksesnya. Ituid() mengembalikan pengenal universal objek Python, mirip dengan pointer di C.
Selanjutnya, setiap perubahan di salah satu dari keduanya akan tercermin di yang lain. Misalnya, mengubah bentuk yang satu akan mengubah bentuk yang lain juga.
Contoh
import numpy as np
a = np.arange(6)
print 'Our array is:'
print a
print 'Applying id() function:'
print id(a)
print 'a is assigned to b:'
b = a
print b
print 'b has same id():'
print id(b)
print 'Change shape of b:'
b.shape = 3,2
print b
print 'Shape of a also gets changed:'
print a
Ini akan menghasilkan keluaran sebagai berikut -
Our array is:
[0 1 2 3 4 5]
Applying id() function:
139747815479536
a is assigned to b:
[0 1 2 3 4 5]
b has same id():
139747815479536
Change shape of b:
[[0 1]
[2 3]
[4 5]]
Shape of a also gets changed:
[[0 1]
[2 3]
[4 5]]
Lihat atau Salinan Dangkal
NumPy memiliki ndarray.view()metode yang merupakan objek array baru yang melihat data yang sama dari array asli. Tidak seperti kasus sebelumnya, perubahan dimensi array baru tidak mengubah dimensi aslinya.
Contoh
import numpy as np
# To begin with, a is 3X2 array
a = np.arange(6).reshape(3,2)
print 'Array a:'
print a
print 'Create view of a:'
b = a.view()
print b
print 'id() for both the arrays are different:'
print 'id() of a:'
print id(a)
print 'id() of b:'
print id(b)
# Change the shape of b. It does not change the shape of a
b.shape = 2,3
print 'Shape of b:'
print b
print 'Shape of a:'
print a
Ini akan menghasilkan keluaran sebagai berikut -
Array a:
[[0 1]
[2 3]
[4 5]]
Create view of a:
[[0 1]
[2 3]
[4 5]]
id() for both the arrays are different:
id() of a:
140424307227264
id() of b:
140424151696288
Shape of b:
[[0 1 2]
[3 4 5]]
Shape of a:
[[0 1]
[2 3]
[4 5]]
Sepotong array membuat tampilan.
Contoh
import numpy as np
a = np.array([[10,10], [2,3], [4,5]])
print 'Our array is:'
print a
print 'Create a slice:'
s = a[:, :2]
print s
Ini akan menghasilkan keluaran sebagai berikut -
Our array is:
[[10 10]
[ 2 3]
[ 4 5]]
Create a slice:
[[10 10]
[ 2 3]
[ 4 5]]
Deep Copy
Itu ndarray.copy()fungsi membuat salinan dalam. Ini adalah salinan lengkap dari larik dan datanya, dan tidak dibagikan dengan larik asli.
Contoh
import numpy as np
a = np.array([[10,10], [2,3], [4,5]])
print 'Array a is:'
print a
print 'Create a deep copy of a:'
b = a.copy()
print 'Array b is:'
print b
#b does not share any memory of a
print 'Can we write b is a'
print b is a
print 'Change the contents of b:'
b[0,0] = 100
print 'Modified array b:'
print b
print 'a remains unchanged:'
print a
Ini akan menghasilkan keluaran sebagai berikut -
Array a is:
[[10 10]
[ 2 3]
[ 4 5]]
Create a deep copy of a:
Array b is:
[[10 10]
[ 2 3]
[ 4 5]]
Can we write b is a
False
Change the contents of b:
Modified array b:
[[100 10]
[ 2 3]
[ 4 5]]
a remains unchanged:
[[10 10]
[ 2 3]
[ 4 5]]