Numpyでの多次元配列(テンソル)のスライス処理([:, :, :])について紹介します。
サンプルコード
まず、3次元配列を生成します。
import numpy as np
>>> a1 = [[1,2,3],[4,5,6],[7,8,9]]
>>> a2 = [[10,11,12],[13,14,15],[16,17,18]]
>>> a3 = [[19,20,21],[22,23,24],[25,26,27]]
>> sample = np.array([a1,a2,a3])
>>> sample
array([[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9]],
[[10, 11, 12],
[13, 14, 15],
[16, 17, 18]],
[[19, 20, 21],
[22, 23, 24],
[25, 26, 27]]])
[x, :, :]
では、スライス処理をしてみます。
まず、[x, :, :]
ですが、これは最初の次元(面)のx番目を取り出しています。
>>> sample[1,:,:]
array([[10, 11, 12],
[13, 14, 15],
[16, 17, 18]])
[:, x, :]
[:, x, : ]
は各面のx番目の行を抽出します。
>>> sample[:,1,:]
array([[ 4, 5, 6],
[13, 14, 15],
[22, 23, 24]])
[:, :, x ]
[:, :, x]
は各面のx列の列を抽出します。
>>> sample[:,:,2]
array([[ 3, 6, 9],
[12, 15, 18],
[21, 24, 27]])