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