반응형
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])
반응형