본문 바로가기
공부 목록/IT & 프로그래밍

수치계산을 위한 파이썬 필수 라이브러리 numpy란?

by 독학박사 2023. 6. 11.

목차


     NumPy는 파이썬에서 수치 계산을 위한 핵심 라이브러리입니다. NumPy는 "Numerical Python"의 약자이며, 다차원 배열 객체와 이러한 배열을 다루기 위한 도구들을 제공합니다. 이를 통해 파이썬에서 효율적이고 편리한 수치 계산을 수행할 수 있는 Numpy 라이브러리에 대해 전체적인 설명을 정리해 보겠습니다.

     

     

    1. Numpy의 주요 기능

    NumPy의 가장 중요한 기능은 다차원 배열인 ndarray(다차원 배열 객체)입니다. ndarray는 동일한 종류의 데이터를 담을 수 있는 다차원 그리드로서, 데이터 조작에 유연한 구조입니다. ndarray는 원소의 인덱싱, 슬라이싱, 변형, 조작, 수학 연산 등 다양한 기능들 또한 제공하고 있습니다.

     

    수치계산을 위한 파이선 필수 라이브러리
    수치계산을 위한 파이선 필수 라이브러리

     

    NumPy를 사용하면 대규모의 데이터 집합을 효율적으로 처리할 수 있으며, 다차원 배열을 사용하여 벡터화된 연산을 수행할 수 있습니다. 이러한 벡터화된 연산은 파이썬의 반복문을 피하고 코드를 더 간결하고 빠르게 만들어 줍니다.

     

    n = 1000000
    x = np.random.rand(n)
    y = np.random.rand(n)
    
    # 벡터화된 연산
    start_time = time.time()
    z = x + y
    end_time = time.time()
    vectorized_time = end_time - start_time
    
    # 반복문을 사용한 연산
    start_time = time.time()
    result = np.zeros_like(x)
    for i in range(n):
        result[i] = x[i] + y[i]
    end_time = time.time()
    loop_time = end_time - start_time

     

    NumPy는 수학, 과학, 공학, 데이터 분석 등 다양한 분야에서 널리 사용되고 있습니다. 예를 들어, 데이터 분석 작업에서는 NumPy를 사용하여 데이터를 로드하고 처리하며, 수학적인 계산이나 통계 분석 작업에서도 많이 활용됩니다.

     

     

    2. Numpy의 함수들

    NumPy는 다양한 함수와 기능을 제공하는 많은 모듈을 포함하고 있습니다. 너무도 많은 기능이 존재하기 때문에 무엇이 있는지 아는 것도 일입니다. 데이터 분석이나 조작을 위해 필요한 기능들은 있는데 그것들을 어느 라이브러리에서 가져와야 하는지 모를 때가 많습니다. Numpy 라이브러리에서 기능별 함수들을 정리해 보았습니다.

     

    배열 생성 함수: 다양한 형태와 크기의 배열을 생성

    numpy.array(), numpy.zeros(), numpy.ones(), numpy.empty(), numpy.arange(), numpy.linspace(), numpy.random.rand(), numpy.random.randn()

     

    배열 연산 함수:배열의 합, 평균, 최소값, 최대값, 표준편차, 분산 등을 계산

    numpy.sum(), numpy.mean(), numpy.min(), numpy.max(), numpy.std(), numpy.var()

     

    배열 형태 및 차원 조작 함수: 배열의 형태, 차원을 조작하거나 배열을 결합하고 분할

    numpy.shape(), numpy.reshape(), numpy.transpose(), numpy.flatten(), numpy.concatenate(), numpy.split()

     

    수학 함수: 삼각함수, 지수함수, 로그함수, 제곱근 등 다양한 수학 함수를 사용

    numpy.sin(), numpy.cos(), numpy.exp(), numpy.log(), numpy.sqrt()

     

    선형 대수 함수: 행렬의 곱셈, 역행렬, 행렬식, 고유값 등 선형 대수 연산을 수행

    numpy.dot(), numpy.linalg.inv(), numpy.linalg.det(), numpy.linalg.eig()

     

    난수 생성 함수: 다양한 종류의 난수를 생성하거나 배열을 무작위 생성

    numpy.random.randint(), numpy.random.uniform(), numpy.random.normal(), numpy.random.shuffle()

     

     

    3. Numpy 라이브러리를 이용한 예제 코드

    Numpy를 이용하여 일정한 데이터(x값)를 만들고 이 값을 이용하여 sin함수를 구성한 후에 노이즈가 포함된 최종 결과값을 가시화하는 코드를 만들어 보겠습니다.

     

    import numpy as np
    import matplotlib.pyplot as plt
    
    # 임의의 데이터 생성
    x = np.linspace(0, 10, 100)  # 0부터 10까지 100개의 데이터를 생성
    y = np.sin(x) + np.random.normal(0, 0.1, 100)  # 사인 함수에 잡음을 추가한 데이터 생성
    
    # 데이터 가시화
    plt.plot(x, y, 'b.')  # 파란색 점으로 데이터를 플롯
    plt.xlabel('X')
    plt.ylabel('Y')
    plt.title('Random Data')
    plt.grid(True)
    plt.show()

     

     이 코드는 np.linspace() 함수를 사용하여 0부터 10까지의 범위에서 100개의 데이터 포인트를 생성했습니다. 그리고 np.sin() 함수를 사용하여 사인 함수의 값을 계산하고, np.random.normal() 함수를 사용하여 잡음을 추가합니다. 가시화를 위해서 plt.plot() 함수를 사용하여 데이터를 점으로 플롯하고, plt.xlabel(), plt.ylabel(), plt.title(), plt.grid() 함수를 사용하여 축 라벨, 제목, 그리드를 설정했습니다.

    numpy 예제 코드 결과물
    numpy 예제 코드 결과물

     

     

    4. 마치며

     파이썬을 사용하는 데 있어 가장 기본적으로 사용되고 있는 라이브러리 'numpy'에 대해 살펴보았습니다. NumPy는 파이썬의 수치 계산 계열 라이브러리인 SciPy, Pandas, Matplotlib 등과 함께 사용되는 경우가 많습니다. 이러한 라이브러리들은 NumPy를 기반으로 구축되어 있으며, NumPy의 다차원 배열을 사용하여 데이터를 효율적으로 처리하고 시각화할 수 있습니다.

     

     이번 포스팅에서는 Numpy의 기본적인 의미와 기능에 대해서만 설명을 하였습니다. Numpy내 각 함수에 대한 설명과 상세 사용에 대해 별도의 포스팅을 통해 정리해 보겠습니다.