強調表示した段落は、2 つのコンマで区切られた整数の構文です。これは、3 つのコンマで区切られた構文の特殊なケースです。カンマで区切られた 3 つの構文を理解すると、カンマで区切られた 2 つの構文が理解できます。
この例の同等の 3 つのカンマ区切りの整数構文は次のようになります。
np.r_['0,2,-1', [1,2,3], [4,5,6]]
より良い説明を提供するために、上記を次のように変更します。
np.r_['0,2,-1', [1,2,3], [[4,5,6]]]
上記には 2 つの部分があります。
コンマ区切りの整数文字列
2 つのカンマ区切りの配列
コンマ区切りの配列は、次の形状をしています。
np.array([1,2,3]).shape
(3,)
np.array([[4,5,6]]).shape
(1, 3)
つまり、最初の「配列」は「1 次元」で、2 番目の「配列」は「2 次元」です。
最初の2
in0,2,-1
は、それぞれarray
を少なくともアップグレードする必要があることを意味し2-dimensional
ます。2 番目array
は既に2-dimensional
あるため、影響はありません。ただし、最初array
は1-dimensional
and にするためには2-dimensional
np.r_
、その形状tuple
に 1 を追加して(1,3)
またはにする必要があります(3,1)
。そこで出番です-1
。基本的に、余分な 1 を の形の0,2,-1
どこに配置する必要があるかを決定します。がデフォルトで、(または、より多くの寸法が必要な場合は) を形状の前に配置します(理由については後で説明します)。これにより、最初の形状がtuple
array
-1
1
1s
tuple
array's
tuple
(1,3)
array's
これは 2 番目の形状と同じtuple
です。0
inは、結果の0,2,-1
配列を「0」軸に沿って連結する必要があることを意味します。
連結軸 (上記の例では、値が 1 の次元 0) を脇に置くと、両方のarrays
残りの次元が等しい (この場合、残りの次元の値はどちらも 3)。そうでない場合、次のエラーが生成されます。tuple
(1,3)
arrays
arrays
ValueError: 連結軸を除くすべての入力配列の次元は正確に一致する必要があります
arrays
形状を持つ2つを連結すると(1,3)
、結果array
は形状を持つ(1+1,3) == (2,3)
ため、次のようになります。
np.r_['0,2,-1', [1,2,3], [[4,5,6]]].shape
(2, 3)
カンマ区切り文字列の 3 番目の整数に0
または正の整数を使用すると、その整数によって、array's
アップグレードされた形状の各形状タプルの開始が決定されます (次元をアップグレードする必要があるtuple
もののみ)。arrays
たとえば、形状のアップグレードを要求する場合、元の形状はアップグレードされた形状の次元 0 から開始する必要がある0,2,0
ことを意味します。はの後に配置されます。これにより、元の形状がアップグレードされた形状の寸法から始まることがわかるように、同じ形状になります。つまり、arrays
array's
tuple
tuple
array
[1,2,3]
tuple
(3,)
1
3
tuple
(3,1)
tuple
(3,)
0
tuple
0,2,1
[1,2,3]
array's
shapetuple
(3,)
は、アップグレードされた shape タプルの次元 1 から開始する必要があります。これは、1 を次元 0 に配置する必要があることを意味します。結果の形状タプルは になります(1,3)
。
カンマ区切り文字列の 3 番目の整数に負の数が使用されている場合、負の符号に続く整数によって、元の形状のタプルがどこで終了するかが決まります。元の形状のタプルが である場合、元の形状のタプルは(3,)
0,2,-1
アップグレードされた形状のタプルの最後の次元で終了する必要があるため、1 はアップグレードされた形状のタプルの次元 0 に配置され、アップグレードされた形状のタプルは になります(1,3)
。(3,)
アップグレードされた形状タプルの最後の次元でもある、アップグレードされた形状タプルの次元 1 で終了します (元の配列はで[1,2,3]
、アップグレードされた配列は です[[1,2,3]]
)。
np.r_['0,2', [1,2,3], [4,5,6]]
と同じです
np.r_['0,2,-1', [1,2,3], [4,5,6]]
最後に、より多くのディメンションを使用した例を次に示します。
np.r_['2,4,1',[[1,2],[4,5],[10,11]],[7,8,9]].shape
(1, 3, 3, 1)
コンマ区切りの配列は次のとおりです。
[[1,2],[4,5],[10,11]]
形のタプルを持つ(3,2)
[7,8,9]
形のタプルを持つ(3,)
どちらも にarrays
アップグレードする必要があります4-dimensional arrays
。元のarray's
形状のタプルは、次元 1 から開始する必要があります。
したがって、最初の配列の場合、形状は次元 1 から始まるようになり(1,3,2,1)
、3,2
2 つの 1 を追加してそれを作成する必要があるため、4-dimensional
1 つは元の形状のタプルの前に配置され、もう 1 つは後に配置されます。
同じロジックを使用すると、2 番目の配列の shape タプルは になり(1,3,1,1)
ます。
ここでarrays
、連結軸として次元 2 を使用して 2 つを連結する必要があります。各配列のアップグレードされた形状タプルから次元 2 を削除する(1,3,1)
と、両方のタプルが得られarrays
ます。結果のタプルは同一であるため、配列を連結することができ、連結された軸を合計して を生成し(1, 3, 2+1, 1) == (1, 3, 3, 1)
ます。