x와 y의 데카르트 곱(Cartesian product) 위에서 2차원 다항식을 평가해야 한다면, Python NumPy에서 제공하는 polynomial.polygrid2d(x, y, c) 메서드를 사용하면 됩니다. 이 메서드는 x와 y의 데카르트 곱으로 구성된 각 지점에서 2차원 다항식의 값을 계산하여 반환합니다.
매개변수 살펴보기
x, y (첫 번째 매개변수): 다항식을 평가할 지점들을 나타냅니다. 값이 리스트(list)나 튜플(tuple)로 전달되면 먼저 ndarray로 변환되며, 이미 ndarray라면 그대로 사용됩니다. ndarray가 아닌 값은 스칼라(scalar)로 취급됩니다.
c (두 번째 매개변수): 다항식의 계수를 담고 있는 배열입니다. 계수는 차수(degree) i, j에 해당하는 항의 계수가 c[i,j]에 위치하도록 정렬되어 있습니다. 만약 c의 차원이 2보다 크다면, 남은 인덱스들은 여러 개의 계수 집합을 의미합니다.
c가 2차원보다 낮으면 형상(shape)에 암묵적으로 1이 추가되어 2차원으로 변환됩니다. 최종 결과의 형상은 c.shape[2:] + x.shape + y.shape가 됩니다.
구현 단계
1단계: 필요한 라이브러리 임포트
import numpy as np from numpy.polynomial.polynomial import polygrid2d
2단계: 3차원 계수 배열 생성
c = np.arange(24).reshape(2,2,6)
3단계: 배열 출력 및 속성 확인
print("Our Array...\n",c)
# 차원 수 확인
print("\nDimensions of our Array...\n",c.ndim)
# 데이터 타입 확인
print("\nDatatype of our Array object...\n",c.dtype)
# 형상(Shape) 확인
print("\nShape of our Array object...\n",c.shape)4단계: polygrid2d()로 다항식 평가
print("\nResult...\n",polygrid2d([1,2],[1,2], c))전체 예제 코드
import numpy as np
from numpy.polynomial.polynomial import polygrid2d
# 3차원 계수 배열 생성
c = np.arange(24).reshape(2,2,6)
# 배열 출력
print("Our Array...\n",c)
# 차원 수 확인
print("\nDimensions of our Array...\n",c.ndim)
# 데이터 타입 확인
print("\nDatatype of our Array object...\n",c.dtype)
# 형상(Shape) 확인
print("\nShape of our Array object...\n",c.shape)
# polygrid2d() 메서드로 x와 y의 데카르트 곱 위에서 2차원 다항식 평가
print("\nResult...\n",polygrid2d([1,2],[1,2], c))실행 결과
Our Array...
[[[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]]
[[12 13 14 15 16 17]
[18 19 20 21 22 23]]]
Dimensions of our Array...
3
Datatype of our Array object...
int64
Shape of our Array object...
(2, 2, 6)
Result...
[[[ 36. 60.]
[ 66. 108.]]
[[ 40. 66.]
[ 72. 117.]]
[[ 44. 72.]
[ 78. 126.]]
[[ 48. 78.]
[ 84. 135.]]
[[ 52. 84.]
[ 90. 144.]]
[[ 56. 90.]
[ 96. 153.]]]위 실행 결과에서 볼 수 있듯이, 입력 배열 c의 형상이 (2, 2, 6)이고 x, y가 각각 길이 2인 배열이므로 최종 결과의 형상은 c.shape[2:] + x.shape + y.shape 공식에 따라 (6, 2, 2)가 됩니다. 이처럼 polygrid2d()는 그리드(grid) 형태의 모든 좌표 조합에 대해 다항식 값을 한 번에 효율적으로 계산해 줍니다.