質問: 素人質問で恐縮ですが、ご回答頂けると幸いです。 ■ご質問内容 csvファイルで、下記のような二次元の時系列データがあります time a b c 0.001 300 200 420 0.002 310 210 410 0.003 305 203 408 0.004 290 180 401 0.005 299 201 388 : それを下記のような3次元の時系列データに変更しようとしていますが、実施の仕方が分かりません。 [1] time a b c 0.001 300 200 420 0.002 310 210 410 [2] time a b c 0.002 310 210 410 0.003 305 203 408 [3] time a b c 0.003 305 203 408 0.004 290 180 401 [4] time a b c 0.004 290 180 401 0.005 299 201 388 : ただ単に2次元のデータを区切って3次元データにするだけでしたら、reshape関数で実施できると思うのですが、 今回のように時間を少しずつずらしていくデータ処理の仕方が分かりません。 ご回答頂けると幸いです。 宜しくお願い致します
回答: numpyを使って試してみました。 ``` import numpy as np a2 = np.array([["a", "b"], [1, 2], [3, 4], [5, 6]]) print(a2) a3 = np.array([a2[[0, i, i+1]] for i in range(1, a2.shape[0] - 1)]) print(a3) ``` ==> ``` array([['a', 'b'], ['1', '2'], ['3', '4'], ['5', '6']], dtype=' 2 とは書けますが l[[1,2]] => [2, 3] のようにはなってくれません。ところがnumpy.ndarrayはそれができるため、元の配列の一部分を参照しつつ、それを任意の形に拡張したような配列ができるようです。便利・・・というか、リストの仕様を自然に拡張した美しい仕様に思えました。