희스레저 2022. 5. 1. 15:55

목차

-arange: array, list를 생성함

-range: 반복문 구문 내에서 범위 지정

-정렬(sort)

-인덱스를 반환하는 argsort

-broadcasting


arange와 range를 같이 보고 이해하기

우리는 순차적인 값을 생성할 때가 많다.
1. 회원에 대한 가입정보 부여(1번 회원부터 순차적으로)
2. 100개 한정판매 상품에 대한 고유번호 부여

데이터 관리를 위해 인덱스를 부여하는 것은 일반적이다.
 

1. arange

1-1. 순서대로 list에 값을 생성하려면?

arr = [1,2,3,4,5,6,7,8,9,10]    #이렇게 해도 되는데.. 귀찮다

arr = np.arange(1,11)       #1이상 11미만으로 숫자를 넣어준다

(첫번째 인자에는 start 이상, 두번째 인자에는 stop의 미만이 들어감)

 

 

1-2. keyword 인자를 사용해보기

1) 함수나 수치가 길어질 때 직관적으로 보이게 해준다.

arr = np.arange(start=1, stop=11)

 

2) 순서를 바꿔서 적어도 출력이 된다.

arr = np.arange(11, 1)    #11과 1이 순서가 바뀌어서 출력이 안된다

arr = np.arange(stop=11, start=1)    #이렇게 순서를 바꿔서 적어도 출력이 된다

 

1-3. step 키워드 활용

step: 몇 칸씩 건너뛸래? 의미

ex) 홀수 값만 생성해보자

arr = np.arange(1, 11, 2)

arr = np.arange(start=1, stop=11, step=2)

 

 

2. range (numpy와 관련없는 python 문법)

말그대로 범위를 지정해줌
보통 for, in의 반복문에서 많이 사용된다.
array나 list를 생성해주는 것이 아니라, 반복문을 돌 구간을 정해주는 것
 

for i in range(1,11):

      print(i)

 

 


정렬

1차원 정렬과 2차원 정렬이 비슷한듯... 다른듯...

 

1. 1차원 정렬

arr = np.array([1,10,5,8,2,4,3,6,8,7,9])

arr

np.sort(arr)    #기본적으로 오름차순

np.sort(arr)[::-1]    #내림차순

 

그러나 이렇게 수행하면 바로 arr에 저장되지 않는다. 변수명.sort() 함수를 이용하면 정렬된 함수를 따로 지정해줄 필요없이 바로 적용됨

 

 

 

2. N차원 정렬

2-1. 열 정렬 (axis = 1): 왼쪽에서 오른쪽으로

arr = np.array([[5,6,7,8], [4,3,2,1], [10, 9, 12, 11]])

 

np.sort(arr2d, axis = 1)

행 안에 있는 성분의 크기에 따라 각 행 속 열의 순서가 바뀐다.

 

2-2. 행 정렬 (axis = 0): 위에서 아래로

arr = np.array([[5,6,7,8], [4,3,2,1], [10, 9, 12, 11]])

np.sort(arr2d, axis = 0)

각 행의 첫 성분의 크기에 따라 행의 순서가 바뀐다.

 


argsort

index를 반환하는 argsort
정렬된 값이 아닌 정렬된 값의 index number를 반환한다.
 

1. 열 정렬 (axis = 1)

arr2d = np.array([[5,6,7,8], [4,3,2,1], [10, 9, 12, 11]])

np.argsort(arr2d, axis = 1)    #axis = 1, 즉 열 정렬

해당 성분이 정렬되면 어느 위치로 가게될지 index number를 반환해주는 것

 

2. 행 정렬 (axis = 0)

np.argsort(arr2d, axis = 0)    #axis = 0, 즉 행 정렬

2번째 행이 1번째 행으로 정렬이 되므로 값이 이렇게 출력됨

 


broadcasting

n차원 텐서(여기서는 matrix) 안의 모든 성분에 일정한 수를 쉽게 연산해주는 기능
 
ex) 기존 배운 방식
a = np.array([[1,2,3], [2,3,4]])
b = np.array([[3,3,3], [3,3,3]])

a + b

→ array([[4,5,6], [5,6,7]])

 

[broadcasting 방식]

a + 3, a - 3, a * 3, a / 3 

 

 


끝! 다음 시간부터는 다시 판다스로