サーチ…


構文

  • numpy.cross(a, b) abの#クロス積(又はにおけるベクターおよびb)
  • 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) #クロスにおけるベクトルの積とB、Bにおけるベクトル、及び出力軸の軸線に沿って配置

パラメーター

カラムカラム
a、b 最も単純な使い方でabbは2つの2要素または3要素のベクトルです。それらは、ベクトルの配列(すなわち、2次元行列)であってもよい。場合、配列および「B」はベクトルであり、 a cross(a,b)その要素が各ベクトルの外積である配列戻りベクトルとa bbは配列でありaは単一のベクトルですcross(a,b)cross(a,b)要素とb各ベクトルとの積をa配列を返します。 abは、同じ形をしていれば両方とも配列になります。この場合、 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は最もゆっくり変化する軸を示します。
axisaaxisb 、および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に指示します。上記と同じ入力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はデフォルトで配列の最後の軸です。 axisc=0は、各ベクトルの要素を配列の最も変化のaxisc=0次元に分散します。

axisaaxisb 、およびaxisc値をすべて同じにするには、3つのパラメータをすべて設定する必要はありません。 4つ目のパラメータ、 axisを必要な単一の値に設定することができ、他の3つのパラメータは自動的に設定されます。軸が関数呼び出しに存在する場合は、axisa、axisb、またはaxiscをオーバーライドします。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow