numpy
numpy.cross
수색…
통사론
-
numpy.cross(a, b)
a 와 b 의 교차 곱 (또는 a 와 b의 벡터) -
numpy.cross(a, b, axisa=-1)
# a 와 b 의 벡터의 곱, a 의 st 벡터는 축 axisa를 따라 배치 됩니다. -
numpy.cross(a, b, axisa=-1, axisb=-1, axisc=-1)
a 와 b 의 벡터 교차 곱, axisc에 지정된 축을 따라 배치 된 출력 벡터 -
numpy.cross(a, b, axis=None)
# 크로스 A의 벡터의 제품 및 B, A, B의 벡터, 및 출력 축의 축선을 따라 뻗어
매개 변수
기둥 | 기둥 |
---|---|
a, b | 가장 간단한 사용법에서, a 와 b 는 두 개의 2 또는 3 요소 벡터입니다. 벡터 배열 (즉, 2 차원 행렬) 일 수도 있습니다. 경우 a 배열 및 'B'가되는 벡터이다 cross(a,b) 그 요소의 각 벡터의 벡터 곱이다 어레이 반환 벡터와 a b . b 배열이고 a 단일 벡터 인 cross(a,b) 그 요소들의 벡터 곱이다 어레이 반환 a 각 벡터와 b . a 와 b 는 같은 모양을 가진 경우 모두 배열이 될 수 있습니다. 이 경우 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 , axisb 및 axisc 모두 동일한 값으로 설정하는 편리한 매개 변수입니다. 경우 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에게 출력을 분배하는 방법을 알려줍니다. 위와 같은 입력 a
와 b
를 사용하면
>>> 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
, axisb
및 axisc
값이 모두 axisc
하려면 세 개의 매개 변수를 모두 설정할 필요가 없습니다. 네 번째 매개 변수 인 axis
를 필요한 단일 값으로 설정할 수 있으며 다른 세 매개 변수는 자동으로 설정됩니다. 축이 함수 호출에있는 경우 axisa, axisb 또는 axisc를 대체합니다.