このmatplotlibの例について質問があります。
これが私が理解できない部分です
def update_line(num, data, line):
line.set_data(data[...,:num])
return line,
何をしline.set_data(data[...,:num])
ますか?
これは、多次元配列でスライスするためにnumpyによって提供される特別な構文です。一般的な構文はですa[s1,s2, ... , sn]
。ここで、si
は通常のスライスまたはインデックスシーケンスに使用される式であり、i番目の次元で目的のスライスを定義します。たとえば、a[5,2:3,1::2]
。
これ...
は、すべての次元で完全なスライスを取得するための短縮形です。たとえば、 ifが3次元の場合a[...,3]
の短縮です。a[:,:,3]
a
実際にはnumpy
表記です。ではnumpy
、...
(省略記号)は可変数の:
スライスのプレースホルダーとして使用されます。
ドキュメントから:
省略記号は、x.ndimと同じ長さの選択タプルを作成するために必要なオブジェクトの数に拡張されます。最初の省略記号のみが展開され、他の省略記号は:として解釈されます。
使用法:
In : x = numpy.array(range(8)).reshape(2,2,2)
In : x
Out:
array([[[0, 1],
[2, 3]],
[[4, 5],
[6, 7]]])
In : x[...,0]
Out:
array([[0, 2],
[4, 6]])
In : x[:,:,0]
Out:
array([[0, 2],
[4, 6]])