私のデータは3Dですが、第3軸だけが既知のディメンションを持ち、2D配列に変換する必要があります。異種ディメンションから2D numpy配列へのレンダリング
例:
input =
[[[1, 2, 3]],
[[4, 5, 6],
[7, 8, 9]],
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]]
input_reshaped =
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
だから、第1および第2の寸法は、私のデータセットに沿って可変であり、第三の一方が一定で前knowedである3Dデータを有しています。
入力のすべてのブロックもnumpy配列です。私はnumpy.vstackを使用してこれを実行し、最初の次元を反復することができることを知っています。しかし、私は可能ならば、私のデータを反復することなく、無限の方法でこのような形を作りたいと思っています。
すでに各ブロックの最初の形を取得し、これらの値を合計してreshapeと一緒に使用するためにリストの比較を実行しようとしました。このように:
def myStack(a):
lengths = [item.shape[0] for item in a]
common_dim = a[0].shape[1]
return a.reshape(np.sum(lengths), common_dim)
しかし、前述の例では、入力と、私は次のエラーを取得する:
ValueError: cannot reshape array of size 3 into shape (6,3)
入力見Pythonは形状のnumy.array(3)
を持っているのでアイデア
追加:可能であれば、上記の条件で逆変換を行うのは本当に素晴らしいことです!コメントで推奨されているように
'np.concatenate(inp axis = 0)'についてはどうですか? –
**まったく**あなたは一緒に作業していますか?あなたの 'input'配列の例は*配列ではなく、' list'オブジェクトです。あなたの実際の配列の例を与えてください。配列は "3D"ですが、配列のコンストラクタを 'input'データに使用すると、1次元配列が返されることに注意してください。 –
うーん、私はあなたに選択肢があるとは思わないが、 np.vstack'。配列のリストの 'np.concatenate'です。 –