Numpy를 활용하여 데이터 분석 해보기2 - 배열 데이터 접근, 항목 추가/삭제, 배열 형태 변경

반응형

Numpy 외부 모듈(라이브러리)을 활용해보자 - 2

# 넘파이 외부 모듈 호출하기

import numpy as np
# 넘파이 모듈 호출, 편의상 np로 사용

 

 

# 넘파이를 이용하여 배열 다루기

배열 데이터 접근하기 (Accessing)

  • array[n] : 배열 array의 n번째 인덱스의 값 가져오기
    • 다차원 배열 또한 같은 방식으로 데이터 접근 가능
# 1차원 배열 데이터 접근하기
x = numpy.arange(1, 6)
>>> array([1, 2, 3, 4, 5])
# 1차원 배열 생성

x[4]
>>> 5
# 배열에서 5번째의 값 (인덱스는 0부터 시작이므로 4+1)

x[-1]
>>> 5
# 배열에서 마지막 값


# 다차원 배열 데이터 접근하기
x = numpy.arange(2, 33, 2).reshape(4, 4)
>>> array([[ 2,  4,  6,  8],
       [10, 12, 14, 16],
       [18, 20, 22, 24],
       [26, 28, 30, 32]])
# 4x4크기의 2차원 배열 생성

x[0][2]
>>> 6
# 배열에서 1행의 3열 값

 

배열 데이터 추가하기 (Insert Elements Into ndarrays) (Insert/Append)

  • numpy.insert(배열, 인덱스, 추가할값, 축정보) : 원하는 위치에 데이터 추가
x = numpy.arange(1, 11).reshape(2, 5) # 2x5 배열 생성
>>> [[ 1  2  3  4  5]
 [ 6  7  8  9 10]]
 a = numpy.arange(5) # 1x5 배열 생성
 >>> array([0, 1, 2, 3, 4])
 
 numpy.insert(x, 1, a, axis = 0)
 >>> array([[ 1,  2,  3,  4,  5],
       [ 0,  1,  2,  3,  4],
       [ 6,  7,  8,  9, 10]])
# 배열 x의 두번째 행에 배열 a의 값 추가

 

  • numpy.append(배열, 추가할값) : 배열의 끝에 새로운 데이터 추가
# append로 배열의 끝에 값 추가하기
a = numpy.arange(1,5)
>>> array([1, 2, 3, 4])

a = numpy.append(a, 100)
print(a)
>>> array([  1,   2,   3,   4, 100])
# 배열의 끝에 100의 값 추가

 

  • 배열에 배열 값 추가 가능. 단, 다른 차원의 배열일 경우 에러 출력
# 서로 다른 차원의 배열끼리 append 사용해보기
a = numpy.arange(1,5)
>>> array([1, 2, 3, 4])
x = numpy.arange(1,5).reshape(2,2)
>>> [[1 2]
 [3 4]]
 
 numpy.append(x, a, axis=0)
# 2차원 배열 x에 1차원 배열 a를 추가
>>> error

# 서로 다른 배열의 형식을 맞춰 append로 추가하기
a = numpy.arange(1,5)
>>> array([1, 2, 3, 4])
x = numpy.arange(1,5).reshape(2,2)
>>> [[1 2]
 [3 4]]
 
 a = a.reshape(2,2) # 합칠 2차원의 배열 크기에 맞춰 2x2로 변형
 numpy.append(x, a, axis=0)
 >>> array([[1, 2],
       [3, 4],
       [1, 2],
       [3, 4]])
# 데이터 값 추가 확인

 

  • numpy.c_[ 배열1, 배열2 ] : 행의 갯수가 같으면 배열1의 마지막 열 뒤로 배열2의 값 추가
    • 주의 : 괄호 ( ) 가 아닌 중괄호 [ ] 사용
a = numpy.arange(1,4)
>>> array([1, 2, 3])

b = numpy.arange(4,7)
>>> array([4, 5, 6])

c = numpy.c_[a, b]
c # 행의 수가 같으면 마지막 열 다음에 값 추가
# 즉, 1차원의 배열을 2차원의 배열로 변경
>>> array([[1, 4],
       [2, 5],
       [3, 6]])

 

배열 데이터 삭제하기 (Deleting)

  • numpy.delete(배열, 인덱스) : 배열의 인덱스 번호의 값 삭제
a = np.arange(1 , 6)
>>> [1 2 3 4 5]

a = np.delete(a, 3)
print(a)
>>> [1 2 3 5]
# 값 '3'의 삭제가 아닌 인덱스 3의 값 삭제

 

  • 다차원 배열은 축(axis)을 기준으로 삭제 가능
x = numpy.arange(2, 33, 2).reshape(4, 4)
>>> [[ 2  4  6  8]
 [10 12 14 16]
 [18 20 22 24]
 [26 28 30 32]]
 
x = numpy.delete(x, 2, axis = 1 )
print(x)
>>> [[ 2  4  8]
 [10 12 16]
 [18 20 24]
 [26 28 32]]
# axis 0=행, 1=열
# x의 3번째 인덱스의 열 삭제

numpy.delete(x, [0,2], axis = 1)
>>> array([[ 4],
       [12],
       [20],
       [28]])
# x의 1번째, 3번째의 인덱스의 열 삭제

 

  • 다차원 배열의 값을 삭제하면 배열 유지가 되지 않기 때문에 1차원(벡터) 배열로 전환
x = numpy.arange(1,5).reshape(2,2)
print(x)
>>> [[1 2]
 [3 4]]
# 2x2크기의 2차원 배열 생성

print(numpy.delete(x,1))
>>> [1 3 4]
# 삭제시 배열 유지가 안되므로 1차원 배열로 변환

 

배열 형태 변경하기 (Ravel)

  • numpy.ravel() : 2차원의 배열을 1차원으로 변경
a = numpy.array( [ [1,2], [3,4] ] )
>>> array([[1, 2],
       [3, 4]])
       
a.ravel()
>>> array([1, 2, 3, 4])

 

 

반응형