numpy
numpy.cross
サーチ…
構文
-
numpy.cross(a, b)
aとbの#クロス積(又はにおけるベクターおよび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)
#クロスにおけるベクトルの積とB、Bにおけるベクトル、及び出力軸の軸線に沿って配置
パラメーター
カラム | カラム |
---|---|
a、b | 最も単純な使い方でa 、 b とb は2つの2要素または3要素のベクトルです。それらは、ベクトルの配列(すなわち、2次元行列)であってもよい。場合、配列および「B」はベクトルであり、 a cross(a,b) その要素が各ベクトルの外積である配列戻りベクトルとa b 。 b は配列でありa は単一のベクトルですcross(a,b) はcross(a,b) 要素とb 各ベクトルとの積をa 配列を返します。 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]), ... |
軸a / b | a が配列の場合は、最も急速に変化する軸、最も遅い変化する軸、またはそれらの間に配置されたベクトルを持つことができます。 axisa 伝えcross() ベクトルが内にレイアウトされていますか。 a デフォルトでは、最もゆっくりと変化する軸の値をとります。 axisb b は入力b と同じ働きをします。 cross() 出力が配列になる場合、出力ベクトルは異なる配列軸に配置できます。 axisc 伝えcross その出力配列内のベクトルをレイアウトする方法。デフォルトでは、 axisc は最もゆっくり変化する軸を示します。 |
軸 | axisa 、 axisb 、およびaxisc 必要に応じて同じ値に設定する便利なパラメータ。 axis と他のパラメータのいずれかが呼び出しに存在する場合、 axis の値は他の値を上書きします。 |
2つのベクトルの交差積
Numpyは、ベクトルのクロス積を計算するためのcross
関数を提供します。ベクトル[1, 0, 0]
と[0, 1, 0]
[1, 0, 0]
外積は[0, 0, 1]
です。ナンシーは私たちにこう言います:
>>> a = np.array([1, 0, 0])
>>> b = np.array([0, 1, 0])
>>> np.cross(a, b)
array([0, 0, 1])
予想通り。
クロス積は、通常、3次元ベクトルに対してのみ定義されます。しかし、Numpy関数の引数のいずれかは、2つの要素ベクトルになります。ベクトルの場合c
で与えられる[c1, c2]
のは、第三の次元にゼロを代入[c1, c2, 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'
1回のコールで複数のクロス商品
どちらの入力も、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])])
複数のクロス製品による柔軟性の向上
最後の2つの例では、numpyはa[0,:]
が最初のベクトル、 a[1,:]
が2番目、 a[2,:]
が3番目のベクトルでa[1,:]
と仮定しましa[0,:]
。 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に指示します。第3のパラメータ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はデフォルトで配列の最後の軸です。 axisc=0
は、各ベクトルの要素を配列の最も変化のaxisc=0
次元に分散します。
axisa
、 axisb
、およびaxisc
値をすべて同じにするには、3つのパラメータをすべて設定する必要はありません。 4つ目のパラメータ、 axis
を必要な単一の値に設定することができ、他の3つのパラメータは自動的に設定されます。軸が関数呼び出しに存在する場合は、axisa、axisb、またはaxiscをオーバーライドします。