dot
행렬 곱셈이지만 *
다른 일을합니다.
두 개의 배열이 있습니다.
Numpy 배열을 사용하면
X * y
요소별로 수행되지만 값 중 하나 또는 둘 모두를 하나 이상의 차원으로 확장하여 호환되도록 할 수 있습니다. 이 작업을 브로드 캐스팅이라고합니다. 크기가 1이거나 누락 된 치수는 방송에 사용할 수 있습니다.
위의 예에서 치수는 다음과 같은 이유로 호환되지 않습니다.
97 2
2 1
여기에 첫 번째 차원 (97과 2)에 충돌하는 숫자가 있습니다. 그것이 위의 ValueError가 불평하는 것입니다. 두 번째 차원은 1 번이 어떤 것과도 충돌하지 않기 때문에 괜찮습니다.
브로드 캐스팅 규칙에 대한 자세한 정보 : http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html
( X
및 y
유형 numpy.matrix
이이면 별표를 행렬 곱셈으로 사용할 수 있습니다. 내 권장 사항은를 멀리 numpy.matrix
하는 것입니다. 단순화하는 것보다 더 복잡 해지는 경향이 있습니다.)
당신의 배열은 괜찮을 것입니다 numpy.dot
; 에서 오류가 발생 numpy.dot
하면 다른 버그가 있어야합니다. 에 대한 모양이 잘못된 경우 numpy.dot
다른 예외가 발생합니다.
ValueError: matrices are not aligned
이 오류가 계속 발생하면 문제에 대한 최소한의 예를 게시하십시오. 당신의 것과 같은 모양의 배열을 사용한 예제 곱셈이 성공합니다.
In [1]: import numpy
In [2]: numpy.dot(numpy.ones([97, 2]), numpy.ones([2, 1])).shape
Out[2]: (97, 1)
X*y
작업 (그리고하지 않습니다)하지만 안np.dot(X,y)
하고X.dot(y))
작동합니다 (그리고 나를 위해 그들이 할).