매트랩 3차원 행렬을 파이썬에서 표현하는 방법
조회수 914회
# 매트랩
f = zeros(984,17,10); # (x,y,z)
a = squeeze(f(1,:,:));
>> size(a) 은 (17,10)
# 파이썬
f = np.zeros((10, 984, 17)); #(z,x,y)
a = np.squeze(f[:,1,:]);
>> a.shape 은 (10,17)
매트랩 식을 파이썬으로 변환하려다 보니, 3차원 형태를 (x,y,z) -> (z,x,y)와 같이 변형하였습니다. 문제는 squeeze를 사용할 땐인데요. 매트랩에서와 같이 17,10이 나와야 합니다. reshape를 사용하면 내용물의 순서가 바뀌게 되어 결과값이 달라집니다.
이 문제를 해결할 방법은 없을까요?
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
.T
붙이면 전치를 구할 수 있습니다.아래 코드 참고하세요.
- 코드
import numpy as np f = np.zeros((10, 984, 17)) a = np.squeeze(f[:,1,:]).T print(a.shape)
- 결과
-
(•́ ✖ •̀)
알 수 없는 사용자
- 답변 감사합니다. 전치를 사용했을 때, 같은 형식을 가지나 결과값이 다른 것 같더라구요. 제가 잘못 본것인가요? 알 수 없는 사용자 2020.10.22 02:22
- 전치 사용하는 것이 맞고요. 값이 틀리다면 입력이 잘못되었거나, 처리 과정에서 문제가 있을 것 같네요. 알 수 없는 사용자 2020.10.22 05:15
-
아래 코드 참고하세요.
- 매트랩 코드
f=zeros(10,5,2); f(1,:,:)=[1 2; 3 4; 5 6; 7 8; 9 10]; a=squeeze(f(1,:,:)); a
- 매트랩 결과
- 파이썬 코드
# -*- coding: utf-8 -*- import numpy as np f = np.zeros((2, 10, 5)) f[:,1,:]=np.array([[1, 2],[3, 4],[5, 6],[7, 8],[9, 10]]).T a = np.squeeze(f[:,1,:]).T print(a.shape) print(a)
- 파이썬 결과
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력