Numpy_기초
Updated:
Numpy 모듈 불러오기.배열생성
import numpy as np
np.__version__
‘1.18.1’
arr1 = np.array([1,3,5,7,9])
# 위와 아래는 같은 값이다
arr2 = np.array((1,3,5,7,9]))
type(arr1)
numpy.ndarray
arr1
array([1, 3, 5, 7, 9])
arr3 = arr1
# 주소값을 복사한다
arr4 = arr1.copy()
# 데이터 값만을 복사한다
print(id(arr1))
print(id(arr3))
print(id(arr4))
2101800924224
2101800924224
2101800973856
arange 메서드
np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.arange(10,20)
array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
np.arange(10,20,3)
array([10, 13, 16, 19])
arr = np.arange(10)
len(arr)
# 위와 아래는 같은 값이다
arr.size
10
linspace메서드
arr = np.linspace(1,10,5)
# np.linspace(x,y,n)
# x 부터 y까지 n개의 값을 동일한 간격으로
print(arr)
print(type(arr))
[ 1. 3.25 5.5 7.75 10. ]
<class ‘numpy.ndarray’>
arr = np.linspace(1,10,5, retstep = True)
# retstep = True를 하면 arr[0]에는 데이터, arr[1]에는 간격크기가 튜플형태로 저장 되어진다
print(type(arr))
print(arr)
print(type(arr[0]))
<class ‘tuple’>
(array([ 1. , 3.25, 5.5 , 7.75, 10. ]), 2.25)
<class ‘numpy.ndarray’>
zeros 메서드와 ones 메서드
np.zeros(10)
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
np.zeros((3,4))
array([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
arr = np.zeros(5,dtype = 'int64')
# 데이터의 타입을 지정해줄수있다
arr
array([0, 0, 0, 0, 0], dtype=int64)
arr.dtype
# 데이터의 타입 확인
dtype(‘int64’)
arr = np.ones((2,3), dtype ='int_')
arr = arr.astype('float32')
# sdtype응 사용해서 타입을 변경할 수 있다
arr
array([[1., 1., 1.], [1., 1., 1.]], dtype=float32)
원소의 자료형
arr1 = np.array([111,2.3,True,False,False])
arr1
array([111. , 2.3, 1. , 0. , 0. ])
arr2 = np.array([111, 2.3, 'python', 'abc'])
arr2
array([‘111’, ‘2.3’, ‘python’, ‘abc’], dtype=’<U32’)
arr3 = np.array([111, True, 'abc'])
arr3
array([‘111’, ‘True’, ‘abc’], dtype=’<U11’)
Numpy 배열의 모양
a = np.array([[1, 2, 3,], [4, 5, 6], [7, 8, 9]])
a.size
9
a.shape
(3, 3)
a.ndim
# 차원수
2
a = np.arange(15)
a.reshape(3,5)
# 새로운 형태로 만든다
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
a
# 적용되지 않는다
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
a = a.reshape(3,5)
# 다음과 같이 사용해야한다
a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
Numpy 배열의 모양
a = np.arange(10)
b = a.reshape(2,5)
a[0] = -999
# a[0]을 변경하지만 b의 값도 변경된다
b
array([[-999, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9]])
c = a.reshape(2,5).copy()
c[0,0] = 0
# copy를 사용하면 값만 복사되기 때문에 변경되지 않는다
a
array([-999, 1, 2, 3, 4, 5, 6, 7, 8, 9])
Numpy 로직 배열과 fancy indexing
# 조건을 줄수 있다
arr = np.arange(100)
arrMask = ( (arr % 5) == 0 )
arr[arrMask]
array([ 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95])
arrMask = ( ( (arr % 5) == 0 ) & ( arr >50) )
arr[arrMask]
array([55, 60, 65, 70, 75, 80, 85, 90, 95])
Numpy 배열의 확장
a = np.array([1, 2, 3])
b = np.append(a, [4, 5, 6])
b
array([1, 2, 3, 4, 5, 6])
a = np.array([[1, 2], [3, 4]])
b = np.append(a, [[9, 9]], axis=0)
b
array([[1, 2],
[3, 4],
[9, 9]])
c = np.append(a, [[9], [9]] , axis=1)
c
array([[1, 2, 9],
[3, 4, 9]])
Numpy 배열의 삭제
a = np.array([[1, 2, 3],[4, 5, 6]])
np.delete(a, 1)
# index가 1인 값을 삭제
array([1, 3, 4, 5, 6])
np.delete(a, (0, 2, 4))
# index가 0,2,4인 데이터 삭제
array([2, 4, 6])
np.delete(a, 1, axis = 0)
# axis = 0 이면 해당되는 행을 삭제한다
array([[1, 2, 3]])
np.delete(a, 1, axis = 1)
# axis = 1 이면 해당되는 열을 삭제한다
array([[1, 3],
[4, 6]])
Leave a comment