シングルトン次元(dim length = 1)
がnp.insert
で元アレイ状に形状基準として追加され、これを直接、その形状を変更することができることを、とても似 -
x.shape = np.insert(x.shape,axis,1)
まあ、我々としても、これはそうのように、np.diff
のビットとnp.cumsum
トリックで複数の新しい軸を招待するために拡張するかもしれない -
insert_idx = (np.diff(np.append(0,axis))-1).cumsum()+1
x.shape = np.insert(x.shape,insert_idx,1)
の
サンプルの実行 - 限り私はちょうどようになる4位に入れるために、タプルのインデックスと省略記号のオブジェクトたとえば
を使用することができますを言うことができるように
In [151]: def addNewAxisAt(x, axis):
...: insert_idx = (np.diff(np.append(0,axis))-1).cumsum()+1
...: x.shape = np.insert(x.shape,insert_idx,1)
...:
In [152]: A = np.random.rand(4,5)
In [153]: addNewAxisAt(A, axis=1)
In [154]: A.shape
Out[154]: (4, 1, 5)
In [155]: A = np.random.rand(5,6,8,9,4,2)
In [156]: addNewAxisAt(A, axis=5)
In [157]: A.shape
Out[157]: (5, 6, 8, 9, 4, 1, 2)
In [158]: A = np.random.rand(5,6,8,9,4,2,6,7)
In [159]: addNewAxisAt(A, axis=(1,3,4,6))
In [160]: A.shape
Out[160]: (5, 1, 6, 1, 1, 8, 1, 9, 4, 2, 6, 7)
もちろん、ああ! ndarrayの形状が設定可能なプロパティであることを忘れるのはとても簡単です – wim
numpy.reshapeもあります。これは非突然変異的なやり方でこれを行うことができます。 – user2357112
@ user2357112よろしく!コードから 'np.insert'によって出力された新しい形状情報を使用することによって。 – Divakar