6개 매개변수 함수의 수치적 동작을 조사하려면 해당 매개변수 공간을 탐색하는 효율적인 방법을 모색합니다. 처음에는 배열 값을 결합하기 위해 사용자 정의 함수를 사용한 다음, 이를 반복적으로 적용하기 위해 줄이기()를 사용했습니다. 이 접근 방식은 기능적이지만 번거롭습니다.
NumPy의 최신 버전(1.8.x 이상)은 훨씬 뛰어난 솔루션인 numpy.meshgrid()를 제공합니다. 이 함수를 사용하면 입력 배열의 가능한 모든 조합으로 구성된 다차원 배열을 생성할 수 있습니다. 귀하의 경우:
import numpy as np a = np.arange(0, 1, 0.1) combinations = np.array(np.meshgrid(a, a, a, a, a, a)).T.reshape(-1, 6)
다음 벤치마크에서 알 수 있듯이 이 접근 방식은 성능을 크게 향상시킵니다.
%timeit np.array(np.meshgrid(a, a, a, a, a, a)).T.reshape(-1, 6) # Output: 10000 loops, best of 3: 74.1 µs per loop
또는 최대 제어를 위해 다음 사용자 정의 기능을 사용할 수 있습니다.
def cartesian(arrays): arr = np.empty((len(arrays.shape), len(arrays))) for n, array in enumerate(arrays): arr[n, :] = array return arr.T.reshape(-1, len(arrays)) %timeit cartesian([a, a, a, a, a, a]) # Output: 1000 loops, best of 3: 135 µs per loop
위 내용은 NumPy의 `meshgrid` 기능은 어떻게 배열 값의 모든 조합을 효율적으로 생성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!