Oh, so are you talking about ndarray.__copy__ vs ndarray.copy? They are both methods of the ndarray class. The first one is used when someone calls the copy function of the copy module on a numpy array, like this:
import numpy as np
a = np.array([1, 2])
b = copy.copy(a)
The result is the same as doing
b = a.copy()
Some people call this operator overloading, which you can read about here: https://www.sololearn.com/learn/Python/2470/
Kishalaya Saha In that program output it has shown all methods and functions of numpy array observe in that functions it has shown copy and in methods it has shown copy and view so by this we can understand it acts as a function and method sometimes
Unfortunately I haven't used NumPy myself and don't know what's a function and what's a method.
Usually, as has been said before, a method is tied to a class while a function is free from a class. But it does get mixed up here and there, and at the edges (when you get to static methods) the lines seem to get blurry anyway.
The more important thing for you - and that's not related to class or not class - is the differentiation between a 'copy' and a 'view'.
This problem field - sometimes with different names - comes up a lot in Python, and that's something you need to have a firm grasp of.