카테고리 없음

넘파이 array함수 활용법(1)_파이썬 기초

디지털랫드 2024. 5. 31. 18:10

 

 넘파이 라이브러리 중 array함수의 기본 활용법.



-[] , () 모두 프린트 했을땐 []형식으로 출력된다.

 

 

 

 

 -차원은 0차원부터 n차원까지 나타낼 수 있다.

-array함수의 쓰임; n차원으로 정렬해준다. 

 

*팁; 쉽게 생각하면 출력했을 때 맨 첫줄 [ 개수가 n개라면 n차원

함수를 이용해서 차원을 아는 방법도 있다. (ndim)

 

 

-ndim 함수로 차원을 알 수 있다.

 

*ndmin = n 으로 최소차원을 지정해줄 수 있다.

 

 

indexing 가능

-이름 지정해놓고 꺼내오기도 가능하다.

-0,1 은 0번째 위치의 1번째 위치의 원소

-0,1,2 는 0번째 위치의 1번째 위치의 2번째 원소

...

 

*참고로 [[1],[2]] 원소가 이런식으로 되어있을때

[1]을 출력하려면? arr[0]

1을 출력하려면?   arr[0,0]

 

 

slicing 가능

slicing

-slicing의 규칙;

-[a:b] 는 a번째 원소 포함 ~ b번째 원소 미포함 

-[a:b:c] 는  a번째 원소 포함 ~ b번째 원소 미포함  중에서 c칸뛰기.

-[::a] 는 처음 포함~ 끝 포함 중에서 a칸 뛰기

-[a:]는 a번째 원소 포함~ 끝 포함 까지

-[:a]는 처음 포함 a번째 미포함 까지

 

*참고 ; 맨 처음 원소는 항상 0이며,  맨 뒤 원소의 위치는 항상 원소개수+1 or -1이다.

 

indexing + slicing 혼합예제

-[위치/슬라이싱, 위치/슬라이싱, ....]

- 1번째 위치 원소의 1부터 4번째 전까지의 위치.

- 0부터 2번째 전까지의 원소들의 각 2번째 위치.

- 0부터 2번째 전까지의 원소들의 각 1부터 4번째 전까지의 위치

 

 

type확인하기; dtype함수

-잘못 쓴 원소는 없는지 디버깅에 활용할 수 있다.

 

 

type바꾸기; astype 함수

-예로 문자 하나 들어있으면 이렇게 오류난다.

-astype함수로 타입을 바꿀 수 있다. (위의 예시에서는 새 변수 newarr에 지정해줬지만, arr.astype해도 가능하다.

 

 

copy/ view함수.  

shape함수

 

-copy함수

-자주 쓰이는 함수 중 하나로, x= arr 가 아닌 ,x= arr.copy() 를 쓰면 기존 arr이 업데이트 되는 걸 방지할 수 있다,

-한마디로 기존 변수를 복사해서 새로운 변수를 만드는 거다.

(사진 원본 수정하고 새로 저장하기 기능과 비슷하다)

*활용; 기존 array를 보존하면서 특정 부분만 업데이트한 array를 사용해야한다면 copy함수를 쓰면 좋겠군

 

-shape함수

(n차원일때의 원소의 개수, n-1차원일때의 원소의 개수,.....)

 

 

 

-nested array 에서의 shape 함수

-첫번째 예시는 설정한 5차원보다 낮아 차원설정이 가능하지만, 두번째 예시는 5차원보다 높아 차원설정이 불가능하다.

 

-첫번째 예시; ndmin=5를 사용하여 최소 5차원 배열을 만들고, 입력 리스트 [1, 2, 3, 4]는 1차원 리스트이지만 최소 5차원을 강제로 적용한다.

  • ndmin=5로 인해 최소 5차원이 적용되어, 입력 리스트가 (1, 1, 1, 1, 4) 모양으로 확장
  • 배열의 모양은 (1, 1, 1, 1, 4) :  첫 4차원은 각각 1개의 요소를 가지며 마지막 5차원에 4개의 요소가 있음을 의미.

 

-두번째 예시; 

  • 주어진 입력 리스트는 이미 9차원의 중첩을 가지고 있으므로 ndmin=5는 추가적인 영향을 미치지 않는다.
  • 배열의 모양은 (1, 1, 1, 1, 1, 1, 1, 4) : 첫 7차원은 각각 1개의 요소를 가지며 마지막 8차원에 4개의 요소가 있음을 의미.

 

-요약

  • 첫 번째 코드는 [1, 2, 3, 4]라는 1차원 리스트를 최소 5차원으로 확장하여 (1, 1, 1, 1, 4) 모양을 가집니다.
  • 두 번째 코드는 이미 9차원의 중첩 리스트 구조를 사용하여 (1, 1, 1, 1, 1, 1, 1, 4) 모양을 가집니다.

 

 

*왜 9차원의 배열인데 shape함수에서는 8차원까지의 원소만 나올까?