申し訳ありませんが、これはコメントのために大きすぎますので、ここで投稿します。 長いアレイがあり、それを分割して再構成する必要がある場合は、これを達成できる他の方法があります。この例では、同じサイズの数値シーケンスを1つの配列にアセンブルする方法を示します。
a = np.arange(100)
>>> b = np.split(a,10)
>>> c = np.c_[b]
>>> c
array([[ 0, 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, 28, 29],
[30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
[40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
[50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
[60, 61, 62, 63, 64, 65, 66, 67, 68, 69],
[70, 71, 72, 73, 74, 75, 76, 77, 78, 79],
[80, 81, 82, 83, 84, 85, 86, 87, 88, 89],
[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]])
このように、シーケンスを簡単に分割して簡単に再アセンブルすることができます。必要に応じて積み重ね順序を変更することができます。おそらく、このシーケンスで表示する方が簡単でしょう。
d = np.r_[b[5:],b[:5]].ravel()
>>> d
array([50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 0, 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, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47, 48, 49])
この例では、最後の5つの分割シーケンスを取り、それらをパイルの前面にスローすることができます。 長さが違う一連の値を持っていても、それらをリストに入れて、np.c_とnp.r_便利関数を使って再アセンブルすることができます(np.c_は通常通り等しいサイズの配列が必要です)。
おそらく特定のケースに対する解決策ではありませんが、さまざまな方法でサンプルを再構成する方法に関するいくつかの提案があります。
元の配列を2に分割して水平に連結したいのですが、ここで説明したものより大きな配列を分割すると言うと、これを使うことができます。 500を水平に連結しますか? np.hstackを何度も使用することなくこれを行う簡単な方法はありますか?多分ループか何か? – HM14
一つのオプションは 'functools'から' reduce'関数を使うことですが、確かにforループを使って結果を一つ一つ連結することもできます。 – Psidom
np.splitとhstackを組み合わせて使用するのは同じことでしょうか? x = np.split(x、2) '(2,900,144)の形を与え、次に' x = np.split(x、2) 'の形を与える' np.hstack(x) 'は'(900,288) 'のxa形を与えます。これが同じ場合は、xをこのように任意の数に分割できますか? – HM14