본문 바로가기

Python

NUMPY (arange/reshape/Slicing...)

NUMPY 

  • NumPy는 다차원 배열을 처리할 수 있는 선형대수학(Linear Algebra) 라이브러리입니다.
  • 다음이 실행이 안되면 아나콘다프롬프트에서 conda install numpy 를 실행하여 설치합니다.




* 넘파이의 2차원 배열을 만드는 방법 1
* [[1,2] , [3,4]] 이런식으로 2개가 들어가야한다.


* 넘파이의 2차원 배열을 만드는 방법 2


Save and Load data ( 파일 저장하기, 불러오기 )


* 모든 데이터를 1로 하여, 1을 8개짜리 넘파이 배열을 만드세요.


BUILT-IN METHODS AND FUNCTIONS


특정 값으로, 행렬 만들기


정수의 배열을 얻고자 할때


np.arange(start,stop,step)


정수 말고 실수를 얻고자 할때


★★★★★★ 중요하다 ★★★★★★

이렇게 1차원 배열을 얻은 후, 우리는 이것을 가지고 여러차원으로 만들 수 있다.

reshape 을 이용

1차원 배열 = 벡터 (Vector)

2차원 배열 = 행렬 (Matrix)

 



Q. 행렬 X를 2행 10열짜리 행렬로 바꾸세요.


Q.. 행렬 X를 20행 1열짜리 행렬로 바꿔서 Y라고 저장하세요.


Q.. x의 shape과 y의 shape을 비교해보세요.

* 위의 식에서 참고해야할 점 

 - x와 y는 완전 다르다. 

 - x는 1차원이다. 

 - Y는 2차원이다.

 


* 여러단계를 거치지 말고, 한번에 원하는 다차원 배열로 만들 수 있다.

Q. 5 부터 시작해서 25개의 순차적인 정수를 만들고, 이를 5X5 행렬로 만든다.


랜덤값으로 채워진 배열을 만들 수 있다.

단점 : 1개만 뽑아준다.


numpy에서는 random으로 수를 채우는, 행렬을 제공한다.
위와 같은 random이지만 아래 예제는 np소속의 random이다.

np.random.randint(start, stop, size = shape)

시작값과 끝값을 줄 수 있다.


 

정규분포를 만족하는 랜덤값으로 채우기

np.random.normal(mean, standard deviation, size=shape)

정규분포 (가우시안 분포)

  • 대한민국 남자의 키 분포
  • 수능 성적 분포

빨간 박스는 중요한 부분이다.



★중요함★

* 각 행렬로 최대값, 최소값이 무엇인지 학습한다.


Q. 행렬별로, 최대값을 구하세요.  axis는 외워야한다. 


Q. X에 70보다 큰 데이터는 몇개가 있나요?


 * 위의 문제를 좀 더 간결한 방법으로 정리한 식 이다. 


 [ 실습 ] 

Q. 4 x 4 ndarray 만드세요. 단, 2 에서 32 까지의 순차적 짝수로 채워졌습니다.

X =

 


SHAPE, LENGTH AND TYPE OF NUMPY ARRAYS


MAX AND MIN VALUES AND THEIR INDEX


Accessing, Deleting, and Inserting Elements Into ndarrays


다차원배열의 인덱스 접근


항목 삭제 ( delete )



해당 요소만 딱 집어서 삭제


항목을 끝에 추가하기 (append)




항목을 원하는 위치에 추가하기 ( pandas ) 


Slicing - 잘라서 가져오기

1. ndarray[start:end]
2. ndarray[start:]
3. ndarray[:end]

 




 

Slicing 할때, 주의할 점!!!!


* 공유하지않고 X만 가져와서 바꾸고 Y는 그대로 놔두고싶을 때 . copy를 쓴다.


원하는 행, 열을 슬라이싱해서 가져오는 방법


중복된것 제거한 값만 리스트로 가져오기


boolean 연산 중요하다 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

설명은 나중에 따로 작성하기로 한다.


실습

X = 5 x 5 ndarray 를 만드세요.정수 1 부터 25 까지 순차적으로 들어있습니다.

Y = Boolean indexing 을 이용해서 홀수만 뽑아서 배열로 만듭니다.


Arithmetic operations and Broadcasting

1차원 배열 연산


2차원 배열 연산


각 요소마다 연산이 수행됨, 브로드캐스팅

* 학생들 점수가 있습니다. [56, 75, 88, 92, 66]
이 학생들의 점수가 잘못 되어서, -5점씩 한 점수로 바꿔야 합니다.


실습

위의 Broadcasting을 이용하여, 다음과 같은 4 x 4 ndarray를 만듭니다.

[[1. 2. 3. 4.]

[1. 2. 3. 4.]

[1. 2. 3. 4.]

[1. 2. 3. 4.]]