
효율적인 배열 조합을 위해 NumPy 활용
6개 매개변수 함수의 수치적 동작을 조사하려면 해당 매개변수 공간을 탐색하는 효율적인 방법을 모색합니다. 처음에는 배열 값을 결합하기 위해 사용자 정의 함수를 사용한 다음, 이를 반복적으로 적용하기 위해 줄이기()를 사용했습니다. 이 접근 방식은 기능적이지만 번거롭습니다.
NumPy를 사용한 효율적인 솔루션
NumPy의 최신 버전(1.8.x 이상)은 훨씬 뛰어난 솔루션인 numpy.meshgrid()를 제공합니다. 이 함수를 사용하면 입력 배열의 가능한 모든 조합으로 구성된 다차원 배열을 생성할 수 있습니다. 귀하의 경우:
1 2 3 4 | 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)
|
로그인 후 복사
다음 벤치마크에서 알 수 있듯이 이 접근 방식은 성능을 크게 향상시킵니다.
1 2 3 | %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
|
로그인 후 복사
또는 최대 제어를 위해 다음 사용자 정의 기능을 사용할 수 있습니다.
1 2 3 4 5 6 7 8 9 | 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!