반응형
- 파이썬 라이브러리중 하나
- 수학 및 통계, 과학 연산을 위한 파이썬 패키지
In [1]:
import numpy as np #모듈 추가
np.__version__ #버전확인
Out[1]:
'1.21.5'
Numpy¶
- 파이썬 라이브러리중 하나
- 수학 및 통계, 과학 연산을 위한 파이썬 패키지
- 행열연산 가능
In [2]:
import numpy as np
버전 확인¶
In [4]:
np.__version__
Out[4]:
'1.21.5'
넘파이 배열만들기¶
-리스트 넘파이 배열화
In [5]:
m_list = [1, 2, 3, 4, 5]
type(m_list), m_list
Out[5]:
(list, [1, 2, 3, 4, 5])
In [6]:
arr = np.array(m_list)
type(arr), arr
Out[6]:
(numpy.ndarray, array([1, 2, 3, 4, 5]))
넘파이와 리스트 차이¶
- 리스트는 데이터형이 다중인 경우 -> 데이터형이 그대로 유지된다.
- 넘파이인 경우는 하나의 데이터형만 유지할 수 있다.
- 문자가 포함되어있는경우 문자형식이 우선으로 선택되며
- 실수와 정수만 있는경우 실수형식으로 선택된다.
-리스트는 데이터형 혼합가능
In [7]:
mylist = [0, 1, 3.5, 100, -6.7,'가나다']
mylist
Out[7]:
[0, 1, 3.5, 100, -6.7, '가나다']
In [8]:
arr = np.array([0, 1, 2, 3, 4, 5])
arr ,arr.dtype
Out[8]:
(array([0, 1, 2, 3, 4, 5]), dtype('int32'))
In [9]:
arr = np.array([0, 1, 2.5, -3, 4, 5.5])
arr , arr.dtype
Out[9]:
(array([ 0. , 1. , 2.5, -3. , 4. , 5.5]), dtype('float64'))
In [10]:
arr = np.array([0, 1, 2.5, -3, 4, 5.5, '가나다'])
arr
Out[10]:
array(['0', '1', '2.5', '-3', '4', '5.5', '가나다'], dtype='<U32')
In [11]:
arr = np.array([0, 1, 2.5, -3, 4, 5.5],dtype=int)
arr ,arr.dtype
Out[11]:
(array([ 0, 1, 2, -3, 4, 5]), dtype('int32'))
넘파이 초기화 함수¶
- np.zeros([x, y]) : 0으로 구성된 2차원 numpy 배열
- np.ones([x, y]) : 1로 구성된 2차원numpy 배열
In [12]:
arr = np.zeros(5)
arr1 = np.zeros([5,5])
arr, arr1
Out[12]:
(array([0., 0., 0., 0., 0.]),
array([[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.]]))
In [13]:
arr = np.ones([2,3],type(int))
arr
Out[13]:
array([[1, 1, 1],
[1, 1, 1]], dtype=object)
- np.full([x, y], 초기값) : 모든 요소를 지정한 값으로 지정하는 2차원 numpy 배열
In [14]:
arr = np.full(5,3)
arr1 = np.full([5,5],10)
print(arr)
print('='*30)
print(arr1)
[3 3 3 3 3]
==============================
[[10 10 10 10 10]
[10 10 10 10 10]
[10 10 10 10 10]
[10 10 10 10 10]
[10 10 10 10 10]]
- np.eye(갯수) : 대각선의 원소가 모두 1이고 나머지 원소는 모두 0으로 정사각형인 2차원 Numpy 배열 : 행과 열의 갯수가 같다
- np.tri(갯수) : 대각선을 기준으로 삼각형 형태의 1로 지정되는 정사각형 2차원 Numpy 배열
In [15]:
np.eye(4, dtype=int)
Out[15]:
array([[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1]])
In [16]:
np.tri(3, dtype=int)
Out[16]:
array([[1, 0, 0],
[1, 1, 0],
[1, 1, 1]])
넘파이 배열의 속성¶
- shape : 배열의 크기 확인
- ndim : 배열의 차원 확인하기
- size : 배열의 전체 크기 확인하기
In [17]:
arr = np.full([3,3],5)
print(arr)
print(f'shape : {arr.shape} \ndim : {arr.ndim} \nsize : {arr.size} \nlen : {len(arr)}')
[[5 5 5]
[5 5 5]
[5 5 5]]
shape : (3, 3)
dim : 2
size : 9
len : 3
-np.linspace(start,end,n) : 범위내에서 n개를 균등간격으로 생성
In [18]:
np.linspace(10, 100, 5, dtype=int)
Out[18]:
array([ 10, 32, 55, 77, 100])
-np.arange(start,end,step) : Numpy배열. end-1 까지만 생성
In [19]:
np.arange(10,20,2)
Out[19]:
array([10, 12, 14, 16, 18])
Numpy 배열의 크기 변경¶
- .resize(X,Y, refcheck=False) 배열 크기 변경
- .reshape(X,Y) 행열 재정의
- .T는 Transpose. 행과 열이 서로 변경된다.
- .swapaxes(축1,축2)
In [20]:
arr =np.array([[1,2,3],[4,5,6]])
arr
Out[20]:
array([[1, 2, 3],
[4, 5, 6]])
-.resize(X,Y, refcheck=False) 사이즈 조절
In [21]:
arr.resize(2,2,refcheck=False)
arr
Out[21]:
array([[1, 2],
[3, 4]])
In [22]:
arr.resize(4, 2 , refcheck=False)
arr
Out[22]:
array([[1, 2],
[3, 4],
[0, 0],
[0, 0]])
-.reshape(X,Y) 행열 재정의
reshape, resize 의 차이¶
- resize 빈공간이거나 초과하는 공간은 날리거나 0으로 채우지만
- reshape 값 내의 행열을 재정의 한다.
In [23]:
arr = arr.reshape(2,4)
arr
Out[23]:
array([[1, 2, 3, 4],
[0, 0, 0, 0]])
-.T는 Transpose. 행과 열이 변경된다.
In [24]:
arr= arr.T
print(arr)
arr = arr.T
print(arr)
[[1 0]
[2 0]
[3 0]
[4 0]]
[[1 2 3 4]
[0 0 0 0]]
-.swapaxes(축1,축2)
In [25]:
print(arr.swapaxes(0,1))
print(arr.swapaxes(1,1))
[[1 0]
[2 0]
[3 0]
[4 0]]
[[1 2 3 4]
[0 0 0 0]]
Numpy 배열의 값 삽입하기¶
- np.insert(배열명, 인덱스, 값) : 1차원 배열의 인덱스에 해당하는 값 삽입
- np.insert(배열명, 인덱스, 값, axis=0/1) : 2차원 배열의 인덱스에 해당하는 값 삽입
- 축(axis)를 지정하지 않으면 1차원 배열로 반환
In [26]:
arr = np.arange(8).reshape(4,2)
arr
Out[26]:
array([[0, 1],
[2, 3],
[4, 5],
[6, 7]])
In [27]:
# axis 값이 없으면 1차원으로 변환된후 값이 추가 된다.
np.insert(arr, 0 , [100, 200])
Out[27]:
array([100, 200, 0, 1, 2, 3, 4, 5, 6, 7])
In [28]:
np.insert(arr, 0 , [300, 500], axis=0)
Out[28]:
array([[300, 500],
[ 0, 1],
[ 2, 3],
[ 4, 5],
[ 6, 7]])
In [29]:
np.insert(arr, 0 , [-1, -2, -3, -4], axis=1)
Out[29]:
array([[-1, 0, 1],
[-2, 2, 3],
[-3, 4, 5],
[-4, 6, 7]])
Numpy 배열의 값 삭제하기¶
- np.delete(배열명, 인덱스) : 1차원 배열에서 특정 인덱스에 해당하는 값 삭제
- np.delete(배열명, 인덱스, axis=0/1) : 2차원 배열에서 인덱스에 해당하는 값 삭제.
- 축(axis)를 지정하지 않으면 1차원 배열로 반환
- 삭제할 방향을 axis로 지정
In [30]:
arr = np.arange(1,21).reshape(4, 5)
arr
Out[30]:
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20]])
In [31]:
# 2차원에서 축을 지정하지 않는다면? (axis)
# 1차원으로 변경된 후 해당 인덱스가 삭제
np.delete(arr, 0)
Out[31]:
array([ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20])
In [32]:
np.delete(arr, 0, axis=0)
Out[32]:
array([[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20]])
In [33]:
np.delete(arr, 0, axis=1)
Out[33]:
array([[ 2, 3, 4, 5],
[ 7, 8, 9, 10],
[12, 13, 14, 15],
[17, 18, 19, 20]])
반응형
'Computer Language > Python' 카테고리의 다른 글
판다스(Pandas) 행과 열 가지고 놀기 (0) | 2022.06.29 |
---|---|
판다스(Pandas) - 기본 개념 (0) | 2022.06.28 |
파이썬 html 정보 가져오기 크롤링(Web Crawling) (0) | 2022.06.02 |
웹 크롤링(Web Crawling) 에러 , 304 에러 (0) | 2022.06.01 |
파이썬[python] 큰따옴표(쌍따옴표) , 따옴표 활용 및 출력 (0) | 2022.03.22 |