>백엔드 개발 >파이썬 튜토리얼 >NumPy 배열에 함수를 효율적으로 적용하려면 어떻게 해야 합니까?

NumPy 배열에 함수를 효율적으로 적용하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-18 04:42:16929검색

How Can I Efficiently Apply Functions to NumPy Arrays?

Numpy 배열을 위한 함수 벡터화

numpy 배열에 대해 함수를 효율적으로 매핑하려면 벡터화 기능을 활용할 수 있습니다. 배열에서 요소별로 작업을 수행합니다. 이는 목록 이해와 같은 루프 기반 접근 방식을 사용하는 것보다 훨씬 빠릅니다.

NumPy 기본 함수

매핑하려는 함수가 이미 NumPy 함수로 벡터화되어 있는 경우, 요소를 제곱하기 위한 np.square()와 같은 것을 사용하는 것이 좋습니다. 다른 방법보다 훨씬 빠릅니다.

NumPy의 벡터화를 사용한 벡터화

NumPy는 함수를 벡터화하기 위한 벡터화 기능을 제공합니다. 함수를 래핑하여 배열에서 요소별 작업을 활성화합니다.

import numpy as np

def f(x):
    return x ** 2

vf = np.vectorize(f)
x = np.array([1, 2, 3, 4, 5])
squares = vf(x)

또 다른 대안은 함수 래퍼를 초기화하지 않고 벡터화를 사용하는 것입니다.

squares = np.vectorize(f)(x)

기타 벡터화 방법

다른 벡터화 방법 include:

  • np.fromiter(): 생성기를 반복하고 배열을 구성합니다.
  • np.array(list(map(f, x))): 맵을 사용합니다. 함수를 사용하여 각 요소에 함수를 적용한 후 배열로 변환합니다.

성능 고려 사항

이러한 모든 방법은 함수를 벡터화할 수 있지만 성능은 다를 수 있습니다. 벤치마크에 따르면 NumPy의 기본 기능을 사용하는 것이 사용 가능한 경우 가장 빠른 것으로 나타났습니다. 다른 경우에는 벡터화 및 fromiter가 일반적으로 np.array(list(map(f, x)))보다 더 나은 성능을 발휘합니다.

위 내용은 NumPy 배열에 함수를 효율적으로 적용하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.