Q1) Numpy 함수는 다양한 모양의 인수를 사용할 수 있습니다. 예를 들어, np.sum (V)은 아래 두 가지 중 하나를 취할 수 있으며 모양이 다른 출력을 반환 할 수 있습니다.다양한 모양의 인수를 취할 수있는 함수 만들기
x1= np.array([1,3]) #(1)
x2= np.array([[[1,2],[3,4]], [[5,6],[7,8]]]) #(2)
나는 두 가지의 길이를 가진 1 차원 벡터에서 두 값을 추가하고 실수를 반환 아래처럼 내 자신의 기능 무언가를 만들고있다.
def foo(V):
return V[0]+V[1];
그러나이 foo 함수는 하나의 1D 벡터 만 사용할 수 있으며 다른 모양을 사용할 수 없습니다. 위의 x1은 인수로 사용할 수 있지만 x2는 사용할 수 없습니다. 위의 두 변수 (x1과 x2) 중 하나를 사용하여 함수를 작동 시키거나 마지막 치수에서 길이가 2 인 배열을 갖는 다른 셰이프로 작업하려면 foo 함수를 어떻게 수정해야합니까?
--------------------------- 업데이트 --------------- ---------------
내 원래 함수는 하드 코딩 된 음수 가우시안 pdf 함수입니다.
def nGauss(X, mu, cov):
# multivariate negative gaussian.
# mu is a vector and cov is a covariance matrix.
k = X.shape[0];
dev = X-mu
p1 = np.power(np.power(np.pi * 2, k) , -0.5);
p2 = np.power(np.linalg.det(cov) , -0.5)
p3 = np.exp(-0.5 * np.dot(np.dot(dev.transpose(), np.linalg.inv(cov)), dev));
return -1.0 * p1 * p2 * p3;
이제 그의 함수는 하나의 pdf 값만 반환 할 수 있습니다. 예를 들어 np.array ([1,2])와 같은 인수 만 사용할 수 있지만 np.array와 같은 인수 X를 사용할 수 없습니다 ([[[1,2], [5,6]], [[7,8 ], [9,0]]]). 여기 내 질문에 내 가우스 함수를 임의의 모양의 인수를 사용하는 방법 및 마지막 점을 제외하고 동일한 구조를 유지하는 각 점의 PDF 값을 반환하는 방법이 있었다 nGauss(np.array([1,2]), mu, cov)
반환 [0.000023] 및 nGauss(np.array([[[1,2], [5,6]], [[7,8],[9,0]]]), mu, cov)
[[0.000023, 0000014 ], [0.000012, 0.000042]].
scipy 함수 'multivariate_normal.pdf'가이 작업을 수행 할 수 있습니다.
Q2) 는 또한 순이익의 기본 배열을 이해하는데 어려움을 겪고 있어요.
t1=np.array([[1,2,3], [4,5,6]])
t2=np.array([1,2,3])
t3=np.array([[1,2,3], [4,5,6],5])
t1의 모양은 (2,3)이며, 매트릭스 관점에서 볼 때 적합합니다. 2 행 3 열. 그러나 t2의 모양은 (3)이고, 나는 (3)이어야한다고 생각합니다. "3"뒤에 빈 공간의 의미는 무엇입니까? 또한, t3의 형상은 (3,)이다. 이 경우 치수가 다른 빈 공간의 의미는 무엇입니까?
미리 감사드립니다.
'x1'의 경우와'x2'의 경우에 대해 foo 출력의 모양을 어떻게 하시겠습니까? # (2)에 대해 (1)과 (2, 2)에 대해 스칼라를 추측하고 있습니까? 그러나 가장 깊은 차원을 다시 추가하고 있습니까? 수작업으로 수동으로 계산하여 원하는 출력을 게시 할 수 있다면 도움이됩니다. – Praveen
@Praveen 원래 가우스 함수를 업데이트했습니다. 이제는 하나의 벡터를 인수 X로 취할 수 있습니다. 따라서'np.array ([1,2])'를 X로 놓으면 그 시점에서 pdf 값을 얻을 수 있습니다. 이제는 데이터 형식을 허용하고 동일한 구조의 PDF 값을 마지막 차원을 제외한 X 인수로 반환하는 가우스 함수를 만들 수 있는지 궁금합니다. –