내 데이터는 3D이지만 제 3 축에만 알려진 치수가 있으며 2D 배열로 변환해야합니다.이질 차원에서 2D numpy 배열로 변형 된 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]]
그래서 I는 상기 제 1 및 제 2 측정 데이터 세트 내 따라 가변적 세번째 상수 이전 본적도 된 3D 데이터를 갖는다.
입력의 모든 블록도 numpy 배열입니다. numpy.vstack을 사용하고 첫 번째 차원을 반복하여 수행 할 수 있음을 알고 있습니다. 그러나 가능한 경우 내 데이터를 반복적으로 반복하지 않고 파이썬 방법으로이 모양을 만들고 싶습니다.
이미 목록 compehension을 수행하여 각 블록의 첫 번째 모양을 얻은 다음이 값을 합산하고 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)
그러나 입력이
이전 예제에서, 나는 다음과 같은 오류가 발생합니다 : 입력을 볼 수 파이썬 모양 (3) 와 numy.array을 가지고ValueError: cannot reshape array of size 3 into shape (6,3)
때문에
아이디어가 있으십니까?
추가 사항 : 가능한 경우 위의 조건에서 역변환을하면 정말 좋을 것입니다! 코멘트에서 권장
'np.concatenate (inp axis = 0)'는 어떻습니까? –
무엇을 ** ** 정확하게 ** 함께 작업하고 있습니까? 귀하의 예제'input' 배열은 * 배열이 아니며'list' 객체입니다. 실제 배열의 예를 들어주세요. 참고, 배열은 "3D"라고 말하지만 배열 생성자를'input' 데이터에 사용하면 1 차원 배열을 반환합니다 ... –
흠, 나는 선택의 여지가 없다고 생각하지만' np.vstack'. 또는 배열의리스트에'np.concatenate '. –