تفاوت بین copy و view
فرق اصلی بین این دوتا در آرایه ها تنها در این خلاصه میشود که copy یک کپی از آرایه هست اما view یک نمایشی از آرایه هست.
بطور کلی هر تغییر روی copy روی آرایه اصلی اعمال نمیشود ولی تغییرات روی view روی آرایه اصلی اعمال میشود.
copy در Numpy
در مثال زیر ایندکس صفرم آرایه ایی که با copy درست کرده ایم را به 42 تغییر دادیم اما اگر با دقت نگاه کنید ارایه اصلی تغییری نکرده و شما صرفا روی کپی از ان تغییر اعمال کرده اید:
x = arr.copy()
view در Numpy
در مثال زیر بر خلاف مثال قبلی با تغییر روی view اطلاعات درون آرایه اصلی نیز تغییر میکند :
x = arr.view()
همونطور که بالاتر گفتیم copy یک کپی از آرایه هست اما view یک نمایشی از آرایه هست , اگر بخواهیم دقیق تر توضیح بدهیم copy دارای اطلاعات خود هست اما view تنها نمایی از اطلاعات دارد و صاحب آنها نیست.
اگر بخواهیم بفهمیم که آرایه مورد نظر دارای اطلاعات هست یا صرفا نمایی از داده های یک آرایه دیگر دارد میتوانیم از ویِژگی بنام base استفاده کنیم .
اگر آرایه ما دارای اطلاعات از خود باشد base به ما none برمیگرداند اما اگر نداتشته باشد آرایه اصلی که داده هارا از ان میگیرد نشان میدهد.
دراصل ویژگی base به دنبال ریشه و منبع آرایه میگردد و به همین خاطر است اگر داده برای خود آرایه باشد none برمیگرداند یعنی ریشه و منبعی ندارد.
print(x.base)
print(y.base)