파이썬 입력에서 x_data, y_data 분리하기(w/ 슬라이싱)
아래 예제는 리스트를 이용한 예제임
예제
xy = np.array([[821.659973, 833.450012, 908100, 828.349976, 831.659973],
[813.02002, 828.070007, 1828100, 821.655029, 828.070007],
[809.929993, 824.400024, 1438100, 818.97998, 824.159973],
[816, 820.958984, 1008100, 815.48999, 819.23999],
[819.359985, 823, 1188100, 818.469971, 818.97998],
[819, 823, 1198100, 816, 820.450012],
[811.700012, 815.25, 1098100, 809.780029, 813.669983],
[809.51001, 816.659973, 1398100, 804.539978, 809.559998]])
x_data = xy[:, 0:-1]
y_data = xy[:, [-1]]
x_data = xy[:, 0:-1]
y_data = xy[:, [-1]]
이 뜻은?
y_data = xy[:, [-1]]
array([[831.659973],
[828.070007],
[824.159973],
[819.23999 ],
[818.97998 ],
[820.450012],
[813.669983],
[809.559998]])
y_data = xy[:, -1]
array([831.659973, 828.070007, 824.159973, 819.23999 , 818.97998 ,
820.450012, 813.669983, 809.559998])
해석방법 :
y = xy [ *** , *** ] 는 리스트를 구성하는 것임.
--- xy 데이터는 [ [ ], [ ] ]의 다중리스트로 매트릭스이며,
--- 내부 구성요소를 슬라이싱으로 지정하고 있음.
(1) 처음의 ":"는 xy의 [ [ ...], [ ...] ] 구조에서 바깥꺽쇠에 해당하는 것을 처리하게 됨 . ":"이니 모든 리스트를 처리하겠다라는 의미.
(2) 두번째의 "0:-1", "[-1]", "-1"은한번 들어간 [...]의 내부에서 처리하게 됨.
"0:-1"은 0번부터 마지막의 직전까지 (즉 마지막만 제외하고 모두 다) --> 이건 값들이니 1*n차원의 리스트(col 방향으로)
"[-1]"은 마지막값을 뽑아서 다시 리스트로만들어줌. (따라서 row 방향이 됨)
"-1"은 마지막 값을 뽑는데, 리스트가 아닌 그냥 값임.
"-1:"은 편법으로 슬라이스 해서 값은 하나 뿐이지만, 리스트로 만들어줌 (따라서 row방향이 됨)
"[0:-1]"은 리스트로 나온 것을 다시 리스트로 만들려 하기 때문에 SyntaxError가 됨.(갸우뚱~~~)
해석방법 :
정확하게는 첫요소부터 분석하는 것이 아니라 뒤요소 부터 분해해서 이해하면 쉬워짐.
뒤의 "0:-1"은 안쪽 [ .... ]의 0번~마지막직전까지를 의미하게 되고 다수요소임으로 리스트가 됨. 만약 "-1"이라고 하면 마지막 데이터 한요소 만을 의미하게 됨.
앞의 ":"는 바깥쪽 [ [...], [....] ]의 전체를 의미하게 됨으로 전체 행이 포함되게 됨.
주. 가끔 reverse order를 위하는 방법으로 array[::-1]을 주는데 초심자는 혼란 스럽게 보임. ( 콜론(쌍점) ":"가 2개인 연산자는 무엇인가????)
잘못된 예)
y_data = xy[:, [-1:]] # --> SyntaxError 두번째의 ":"에서
x_data = xy[:, [0:-1]] # --> SyntaxError 두번째의 ":"에서
해석방법 :
정확하게는 첫요소부터 분석하는 것이 아니라 뒤요소 부터 분해해서 이해하면 쉬워짐.
뒤의 "0:-1"은 안쪽 [ .... ]의 0번~마지막직전까지를 의미하게 되고 다수요소임으로 리스트가 됨. 만약 "-1"이라고 하면 마지막 데이터 한요소 만을 의미하게 됨.
앞의 ":"는 바깥쪽 [ [...], [....] ]의 전체를 의미하게 됨으로 전체 행이 포함되게 됨.
※ 가끔 reverse order 방법으로 array[::-1]을 주는데 초심자에게 혼란 스럽게 보임. ( 콜론(쌍점) ":"가 2개인 연산자는 무엇인가????)
파이썬 3.10부터는 switch/case같은 match/case 구조적 패턴 매칭 사용 가능 (0) | 2023.09.08 |
---|---|
[팁] Python 코딩 실수들 (0) | 2022.03.07 |