NumPy defines a rich set of operations and functions for the ndarray type. NumPy defines the notion of a universal function, abbreviated as ufunc, which is a function object that can be applied to arbitrary arrays. Universal functions are objects of ufunc type, and NumPy provides a vast collection of built-in ufunc functions, covering all computations needed in scientific and data applications.
A ufunc is specialized towards the element by element application of a function. That is, if x is an array object, and f is a ufunc, the f(x) expression will apply the function f to every element of array x, and return a new object with the resulting values.
A ufunc follows a strict functional protocol; applying the f function to x will never change the elements of the x arrays themselves, but return a new array with the values of f applied to each element of x. User...