>백엔드 개발 >파이썬 튜토리얼 >Numpy 버전을 보기 위한 팁과 요령

Numpy 버전을 보기 위한 팁과 요령

王林
王林원래의
2024-01-19 10:53:051230검색

Numpy 버전을 보기 위한 팁과 요령

numpy는 Python에서 매우 일반적으로 사용되는 수학 라이브러리로 과학 컴퓨팅 분야에서 널리 사용되며 수많은 수치 계산, 선형 대수, 난수 생성, 푸리에 변환 및 기타 기능을 지원합니다. 수학적 계산에 numpy를 사용할 때 numpy 버전과 그 특성을 확인하고 다양한 버전의 numpy에 대해 서로 다른 최적화 및 알고리즘 선택을 수행해야 하는 경우가 많습니다. 이 글에서는 numpy 버전 확인을 위한 팁과 요령, 그리고 numpy 버전 정보를 감지하여 numpy를 더 잘 사용하는 방법을 소개합니다.

1. numpy 버전을 보는 방법

numpy에는 numpy 버전 정보를 얻는 데 사용할 수 있는 많은 내장 함수와 속성이 있습니다. 다음은 numpy 버전을 확인하기 위해 일반적으로 사용되는 몇 가지 방법을 소개합니다.

  1. numpy.version 속성 사용

numpy에는 버전 속성이 있는데, 이를 사용하면 버전 번호, Git 커밋 해시 값, 컴파일러 정보 등을 포함하여 현재 numpy 버전에 대한 자세한 정보를 얻을 수 있습니다. 코드 예시는 다음과 같습니다.

import numpy as np
print(np.version.version)

출력 결과는 다음과 같습니다.

1.20.1
  1. numpy.__version__ 속성 ​​사용

numpy는 버전 속성 외에도 __version__ 속성도 제공하며 기본값은 현재입니다. numpy 버전 문자열 표현. 이 속성은 numpy에서 버전 정보를 확인하는 일반적인 방법 중 하나이기도 합니다. 코드 예제는 다음과 같습니다.

import numpy as np
print(np.__version__)

출력 결과는 이전 예제와 동일합니다.

1.20.1
  1. numpy.show_config 함수 사용

더 자세한 numpy를 보려면 컴파일 및 빌드 정보를 보려면 numpy.show_config 함수를 사용하면 됩니다. 이 함수는 C++ 컴파일러, CBLAS 라이브러리, LAPACK 라이브러리 등을 포함하여 빌드할 때 numpy에서 사용하는 다양한 컴파일러, 링커 및 라이브러리를 표시합니다. 코드 예시는 다음과 같습니다.

import numpy as np
np.show_config()

출력 결과는 다음과 같습니다.

blas_mkl_info:
    libraries = ['mkl_rt']
    library_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/lib/intel64']
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
    include_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/include']

blis_info:
    NOT AVAILABLE

openblas_info:
    NOT AVAILABLE

lapack_mkl_info:
    libraries = ['mkl_rt']
    library_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/lib/intel64']
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
    include_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/include']

lapack_opt_info:
    libraries = ['mkl_rt']
    library_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/lib/intel64']
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
    include_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/include']

lapack_info:
    libraries = ['mkl_rt']
    library_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/lib/intel64']
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
    include_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/include']

mkl_info:
    libraries = ['mkl_rt']
    library_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/lib/intel64']
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
    include_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/include']

blas_opt_info:
    libraries = ['mkl_rt']
    library_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/lib/intel64']
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
    include_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/include']
...(输出结果省略)

위 세 가지 방법을 통해 numpy의 특정 버전과 컴파일 정보를 확인하고, 다양한 프로젝트에 해당하는 numpy 버전을 파악한 후, 적절한 numpy 알고리즘과 방법은 매우 중요합니다.

2. numpy 버전 정보 적용

numpy 버전 정보를 명확히 한 후, numpy 사용 시 버전별로 적절한 알고리즘과 방법을 선택하여 최상의 최적화 효과와 성능 향상을 얻을 수 있습니다. 예를 들어, numpy 버전 1.20 이상에서는 프로그램이 실행될 때 예외를 피하기 위해 더 높은 수준의 함수를 사용하여 NaN 값을 자동으로 처리할 수 있으며 동시에 일부 효율적인 최적화 알고리즘이 사용되며 성능도 향상되었습니다. 크게 개선되었습니다. 낮은 버전의 numpy에서는 NaN 값과 예외를 수동으로 처리하고 몇 가지 간단한 알고리즘을 사용하여 프로그램의 안정성과 성능을 향상시켜야 할 수도 있습니다.

다음은 numpy 버전 정보를 활용하여 최적의 알고리즘을 선택하는 방법에 대한 간단한 예입니다.

10000×10000 행렬의 곱을 계산해야 한다고 가정해 보겠습니다. 이 작업은 두 가지 방법으로 계산할 수 있습니다. 한 가지 방법은 BLAS 라이브러리의 dgemm 서브루틴을 호출하여 두 행렬의 내적을 계산하는 numpy.dot() 함수를 사용하는 것입니다. 또한 멀티스레딩 및 벡터화 계산도 지원하며 계산 속도가 매우 빠릅니다. 또 다른 방법은 numpy.multiply() 함수를 사용하여 두 행렬 요소를 요소별로 곱한 다음 결과를 합산하여 내적을 얻는 것입니다. 이 방법의 구현은 상대적으로 간단하지만 성능은 낮습니다.

다음 코드는 두 알고리즘의 계산 시간을 비교합니다.

import numpy as np
import time

A = np.random.rand(10000, 10000)
B = np.random.rand(10000, 10000)

# 方法1:使用numpy.dot函数
start_time = time.time()
C = np.dot(A, B)
end_time = time.time()
print("方法1计算时间:", end_time - start_time)

# 方法2:使用numpy.multiply函数
start_time = time.time()
C = np.multiply(A, B).sum()
end_time = time.time()
print("方法2计算时间:", end_time - start_time)

출력 결과는 다음과 같습니다.

方法1计算时间: 3.94059681892395
方法2计算时间: 9.166156768798828

보시다시피 numpy.dot()를 사용한 계산 속도는 numpy를 사용한 것보다 거의 2.5배 빠릅니다. Multiply(), numpy 버전이 호환되면 더 나은 성능과 더 짧은 계산 시간을 얻으려면 numpy.dot() 알고리즘을 선호해야 한다는 결론을 내릴 수 있습니다.

결론

이 글에서는 numpy 버전을 보는 여러 가지 방법을 소개하고, 다양한 numpy 버전에 대해 다양한 알고리즘과 방법을 적용하는 방법도 소개합니다. 실제 numpy 개발에서는 numpy 버전의 특성과 성능을 이해하고 numpy 버전 보기 기술을 익히는 것이 매우 필요합니다. 이는 더 나은 numpy 적용 및 개발을 위한 견고한 기반을 마련할 수 있습니다.

위 내용은 Numpy 버전을 보기 위한 팁과 요령의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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