小さな例で説明しましょう。
>>> x = np.array([[1,2], [3,4], [5,6], [7,8]])
>>> x
array([[1, 2],
[3, 4],
[5, 6],
[7, 8]])
フォームを持つ新しい配列が必要です
array([[0, 0, 1, 2, 3, 4],
[1, 2, 3, 4, 5, 6],
[3, 4, 5, 6, 7, 8],
[5, 6, 7, 8, 0, 0]])
ここでは、コンテキストのサイズは +/-1 ですが、変数のままにしたいと思います。
これまでのところ、元の配列にゼロを追加しています。
>>> y = np.concatenate((np.zeros((1, 2)), x, np.zeros((1, 2))), axis=0)
>>> y
array([[ 0., 0.],
[ 1., 2.],
[ 3., 4.],
[ 5., 6.],
[ 7., 8.],
[ 0., 0.]])
そして、新しいサイズの行を読み取って、値を新しい配列に入れます。
>>> z = np.empty((x.shape[0], x.shape[1]*3))
>>> for i in range(x.shape[0]): z[i] = y[i:i+3].flatten()
そのようなものは機能しますが、遅く、醜く、非Pythonicだと思います。この再配置を行うためのより良い方法を考えられますか? インプレースっぽいソリューションのための追加のサムアップ:)