수색…


통사론

  • numpy.cross(a, b) ab 의 교차 곱 (또는 ab의 벡터)
  • numpy.cross(a, b, axisa=-1) # ab 의 벡터의 곱, a 의 st 벡터는 축 axisa를 따라 배치 됩니다.
  • numpy.cross(a, b, axisa=-1, axisb=-1, axisc=-1) ab 의 벡터 교차 곱, axisc에 지정된 축을 따라 배치 된 출력 벡터
  • numpy.cross(a, b, axis=None) # 크로스 A의 벡터의 제품 및 B, A, B의 벡터, 및 출력 축의 축선을 따라 뻗어

매개 변수

기둥 기둥
a, b 가장 간단한 사용법에서, ab 는 두 개의 2 또는 3 요소 벡터입니다. 벡터 배열 (즉, 2 차원 행렬) 일 수도 있습니다. 경우 a 배열 및 'B'가되는 벡터이다 cross(a,b) 그 요소의 각 벡터의 벡터 곱이다 어레이 반환 벡터와 a b . b 배열이고 a 단일 벡터 인 cross(a,b) 그 요소들의 벡터 곱이다 어레이 반환 a 각 벡터와 b . ab 는 같은 모양을 가진 경우 모두 배열이 될 수 있습니다. 이 경우 cross(a,b)cross(a[0],b[0]), cross(a[1], b[1]), ... 반환합니다 cross(a[0],b[0]), cross(a[1], b[1]), ...
축 / b a 가 배열 인 경우 벡터는 가장 빠르게 변화하는 축, 가장 느리게 변하는 축 또는 중간에 배치 될 수 있습니다. axisa 알 수 cross() 벡터가에 배치하는 방법을 a . 기본적으로 가장 느리게 변하는 축의 값을 취합니다. axisb b 는 입력 b 와 동일하게 작동합니다. cross() 의 출력이 배열이 될 경우, 출력 벡터는 다른 배열 축으로 배열 될 수 있습니다. axisc 말한다 cross 출력 배열의 벡터를 배치하는 방법에 대해 설명합니다. 기본적으로 axisc 는 가장 천천히 변하는 축을 나타냅니다.
중심선 axisa , axisbaxisc 모두 동일한 값으로 설정하는 편리한 매개 변수입니다. 경우 axis 다른 파라미터의 임의의 통화에 존재의 값 axis 다른 값을 대체 할 것이다.

두 벡터의 교차 곱

Numpy는 벡터 교차 제품 계산을위한 cross 함수를 제공합니다. 벡터 [1, 0, 0][0, 1, 0] 의 외적은 [0, 0, 1] 이다. Numpy는 우리에게 다음과 같이 말합니다.

>>> a = np.array([1, 0, 0])
>>> b = np.array([0, 1, 0])
>>> np.cross(a, b)
array([0, 0, 1])

예상대로

교차 제품은 일반적으로 3 차원 벡터에 대해서만 정의됩니다. 그러나 Numpy 함수에 대한 인수 중 하나는 두 개의 요소 벡터가 될 수 있습니다. 벡터 c[c1, c2] 로 주어지면 Numpy는 [c1, c2, 0] 의 세 번째 차원에 0을 할당합니다. 그래서,

>>> c = np.array([0, 2])
>>> np.cross(a, c)
array([0, 0, 2])

Numpy 함수ndarray메소드 로 존재하는 dot 와 달리, cross 은 독립형 함수로만 존재합니다.

>>> a.cross(b)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'cross'

한 번의 호출로 여러 교차 제품

어느 입력이라도 3- (또는 2-) 요소 벡터의 배열이 될 수 있습니다.

>>> a=np.array([[1,0,0],[0,1,0],[0,0,1]])
>>> b=np.array([1,0,0])
>>> np.cross(a,b)
array([[ 0,  0,  0],
       [ 0,  0, -1],
       [ 0,  1,  0]])

이 경우 결과는 배열 ([np.cross (a [0], b), np.cross (a [1], b), np.cross (a [2], b)])입니다.

b 또한 3- (2- 또는) 벡터 요소의 어레이 일 수 있지만, 동일한 형상 있어야 a . 그렇지 않으면 계산이 실패하고 "모양 불일치"오류가 발생합니다. 그래서 우리는 가질 수 있습니다.

>>> b=np.array([[0,0,1],[1,0,0],[0,1,0]])
>>> np.cross(a,b)
array([[ 0, -1,  0],
       [ 0,  0, -1],
       [-1,  0,  0]])

결과는 array([np.cross(a[0],b[0]), np.cross(a[1],b[1]), np.cross(a[2],b[2])])

다중 교차 제품의 유연성 향상

마지막 두 예제에서 numpy는 a[0,:] 가 첫 번째 벡터이고 a[1,:] 가 두 번째이고 a[2,:] 가 세 번째 벡터라고 가정했습니다. Numpy.cross는 축이 벡터를 정의하도록 지정할 수있는 선택적 인수 인 axisa를 가지고 있습니다. 그래서,

>>> a=np.array([[1,1,1],[0,1,0],[1,0,-1]])
>>> b=np.array([0,0,1])
>>> np.cross(a,b)
array([[ 1, -1,  0],
       [ 1,  0,  0],
       [ 0, -1,  0]])
>>> np.cross(a,b,axisa=0)
array([[ 0, -1,  0],
       [ 1, -1,  0],
       [ 0, -1,  0]])
>>> np.cross(a,b,axisa=1)
array([[ 1, -1,  0],
       [ 1,  0,  0],
       [ 0, -1,  0]])

axisa=1 결과와 기본 결과는 모두 (np.cross([1,1,1],b), np.cross([0,1,0],b), np.cross([1,0,-1],b)) . 기본적으로 axisa 항상 배열의 마지막 (가장 천천히 변하는) 축을 나타냅니다. axisa=0 결과는 (np.cross([1,0,1],b), np.cross([1,1,0],b), np.cross([1,0,-1],b)) .

유사한 선택적 매개 변수 인 axisb 도 2 차원 배열 인 경우 b 입력에 대해 동일한 함수를 수행합니다.

매개 변수 axisa 및 axisb는 입력 데이터를 분배하는 방법을 numpy에 지시합니다. 세 번째 매개 변수 인 axisc는 a 또는 b 가 다차원 인 경우 numpy에게 출력을 분배하는 방법을 알려줍니다. 위와 같은 입력 ab 를 사용하면

>>> np.cross(a,b,1)
array([[ 1, -1,  0],
       [ 1,  0,  0],
       [ 0, -1,  0]])
>>> np.cross(a,b,1,axisc=0)
array([[ 1,  1,  0],
       [-1,  0, -1],
       [ 0,  0,  0]])
>>> np.cross(a,b,1,axisc=1)
array([[ 1, -1,  0],
       [ 1,  0,  0],
       [ 0, -1,  0]])

따라서 axisc=1 과 기본 axisc 모두 동일한 결과를 제공합니다. 즉, 각 벡터의 요소는 출력 배열의 가장 빠른 이동 색인에서 인접합니다. axisc는 기본적으로 배열의 마지막 축입니다. axisc=0 은 각 벡터의 요소를 배열의 가장 느리게 변하는 차원에 분산시킵니다.

axisa , axisbaxisc 값이 모두 axisc 하려면 세 개의 매개 변수를 모두 설정할 필요가 없습니다. 네 번째 매개 변수 인 axis 를 필요한 단일 값으로 설정할 수 있으며 다른 세 매개 변수는 자동으로 설정됩니다. 축이 함수 호출에있는 경우 axisa, axisb 또는 axisc를 대체합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow