[파이썬][numpy] numpy에서 ufunc (Universal Functions)

What are ufuncs?

Ufuncs are functions in NumPy that operate element-wise on arrays. They are designed to handle large arrays efficiently by executing the same operation on multiple array elements at once. Ufuncs can perform basic arithmetic operations (addition, subtraction, multiplication, division, etc.) as well as more complex mathematical operations (trigonometric functions, logarithmic functions, etc.) on arrays.

Benefits of using ufuncs

Using ufuncs in NumPy for performing array operations has several advantages:

  1. Performance: Ufuncs are implemented in compiled C code, which makes them significantly faster compared to using Python loops to perform element-wise operations.

  2. Simplicity: Ufuncs simplify the code by eliminating the need for explicit loops. You can perform operations on entire arrays instead of iterating through each element individually.

  3. Broadcasting: Ufuncs automatically handle broadcasting, which allows you to perform operations between arrays of different shapes. Broadcasting extends scalar values or arrays to match the shape of other arrays, making it easier to perform element-wise operations.

Example usage of ufuncs

Let’s look at some examples of using ufuncs in NumPy:

import numpy as np

# Create two arrays
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([6, 7, 8, 9, 10])

# Perform element-wise addition
result = np.add(arr1, arr2)
print(result)  # Output: [7 9 11 13 15]

# Perform element-wise multiplication
result = np.multiply(arr1, arr2)
print(result)  # Output: [6 14 24 36 50]

# Perform element-wise trigonometric function
angles = np.array([0, np.pi/2, np.pi])
result = np.sin(angles)
print(result)  # Output: [ 0.  1.  0.]

In the above example, we create two arrays arr1 and arr2. We then use the np.add, np.multiply, and np.sin ufuncs to perform element-wise addition, multiplication, and trigonometric operation respectively.

Conclusion

Ufuncs are powerful tools in NumPy that allow for efficient element-wise operations on arrays. They provide a simple and performant way to perform mathematical operations on large arrays in Python. By leveraging ufuncs, you can write cleaner and faster code for array computations.