numpy

BackEnd_Ash.log·2021년 1월 5일
0

machine_learning

목록 보기
2/3

update numpy int , float , sum

http://pythonstudy.xyz/python/article/402-numpy-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

인프런 완벽가이드 강의

start

pip install numpy

numpy 는 과학 계산을 위한 라이브러리 로서 다차원 배열을 처리하는데 필요한 여러 유용한 기능을 제공하고 있다

numpy 는 C언어로 구현되어있으며 , 다차원 처리와 백터 및 행렬 연산에 편리한 기능을 제공합니다.

numpy 배열

numpy 에서 배열은 동일한 타입의 값들을 가진다.

기본적으로

import numpy as np
mylist = [1,2,3,4]
print(np.array(mylist)) # [1 2 3 4]
출력이 된다.

type(list) vs type(np.array)

리스트랑 똑같은데 ??
type 을 찍어보게 되면 ,

import numpy as np
mylist = [1,2,3,4]
print(np.array(mylist))
print(type(mylist)) # <class 'list'>
print(type(np.arange(0,10))) # <class 'numpy.ndarray'>

타입은 다르게 나온다.

list.shape

행렬이 몇행 몇열 육안으로 보면 되겠지만 , 출력을 할수가 있다.

In [17]: list2 = np.array([[1,2,3], [4,5,6] ,[7,8,9]])

In [18]: list2
Out[18]:
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]]) # 차원 

In [19]: list2.shape
Out[19]: (3, 3)

정수형 실수형

array_int = np.array([1, 2, 3])
array_float = array_int.astype('float64') # 실수형으로 변환 
print(array_float, array_float.dtype) # [1. 2. 3.] float64

array_int1= array_float.astype('int32') # 실수형을 다시 정수형으로 변환 
print(array_int1, array_int1.dtype) # [1 2 3] int32

array_float1 = np.array([1.1, 2.1, 3.1])
array_int2= array_float1.astype('int32')
print(array_int2, array_int2.dtype) # [1 2 3] int32

sum

array2 = np.array([[1,2,3],
                  [2,3,4]])

print(array2.sum()) # 전체를 더해서 15
print(array2.sum(axis=0)) # 열끼리 더해서 [1+2 , 2+3 , 3+4] => [3 5 7]
print(array2.sum(axis=1)) # 행끼리 더해서 [1+2+3 , 2+3+4] => [6 9]

list.reshqpe

기존에 있는 행렬을 다시 재정렬 할수가 있다.
하지만 무작정 바꿀수는 없고 ,

만약에

In [24]: b
Out[24]:
array([[1, 2, 3],
       [4, 5, 6]])

라고한다면 ,
reshape 를 이용해서

In [26]: b.reshape(3,2)
Out[26]:
array([[1, 2],
       [3, 4],
       [5, 6]])

로 바꿀 수 있다.

np.arange

배열생성

기본적으로 python 에서 반복문을 구현하고자 할때 ,

for i in range(0 , 10)
	print(i)

이렇게 출력하는데 , numpy 를 이용하게 되면 ,

import numpy as np
In [8]: a = np.arange(0,10)

In [9]: a
Out[9]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [10]: a = np.arange(0,10,2)

In [11]: a
Out[11]: array([0, 2, 4, 6, 8])
  • rank : 배열의 차원
  • shape : 각 차원의 크기 ( 튜플 )

ex) 행이 2이고 열이 3인 2차원 배열
rank : 2
shape : (2,3)

import numpy as np
list1 = [1,2,3,4]
a = np.array(list1)
print(a.shape) # (4 ,)

np.linspace

np.linspace 는 균일하게 나누고자 할때 사용하는 함수이다.

In [41]: import numpy as np

In [42]: a = np.arange(1,2,0.1) # 1 부터 2까지 0.1 로 쪼갬

In [43]: a
Out[43]: array([1. , 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9])

In [44]: b = np.linspace(1,2,11) # 1 부터 2까지 개수 11개 

In [45]: b
Out[45]: array([1. , 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2. ])

numpy의 linspace() 함수는 특정 구간을 쪼개어 값을 생성한다는 점에서 arange() 함수와 비슷합니다. 하지만 arange() 함수에서는 간격을 지정하고 linspace()함수에서는 구간의 개수를 지정한다는 점에서 차이가 있습니다.

  • arange : 간격을 지정
  • linspace : 구간의 개수를 지정

max , min

In [49]: arr = np.random.randint(0,100,10)

In [50]: arr
Out[50]: array([49, 83,  8, 29, 59, 34, 44, 72, 19, 10])

In [51]: arr.max()
Out[51]: 83

In [52]: arr.min()
Out[52]: 8

argmax , argmin

In [53]: arr.argmax()
Out[53]: 1

In [54]: arr.argmin()
Out[54]: 2

슬라이싱

In [56]: mat = np.arange(0,100).reshape(10,10)

In [57]: mat
Out[57]:
array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
       [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
       [40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
       [50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
       [60, 61, 62, 63, 64, 65, 66, 67, 68, 69],
       [70, 71, 72, 73, 74, 75, 76, 77, 78, 79],
       [80, 81, 82, 83, 84, 85, 86, 87, 88, 89],
       [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]])

In [58]: mat[5,2]
Out[58]: 52

In [59]: mat[:,2]
Out[59]: array([ 2, 12, 22, 32, 42, 52, 62, 72, 82, 92])

In [60]: mat[2,:]
Out[60]: array([20, 21, 22, 23, 24, 25, 26, 27, 28, 29])

행렬 비교

In [61]: mat[mat>50]
Out[61]:
array([51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
       68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
       85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99])

In [62]: mat > 50
Out[62]:
array([[False, False, False, False, False, False, False, False, False,
        False],
       [False, False, False, False, False, False, False, False, False,
        False],
       [False, False, False, False, False, False, False, False, False,
        False],
       [False, False, False, False, False, False, False, False, False,
        False],
       [False, False, False, False, False, False, False, False, False,
        False],
       [False,  True,  True,  True,  True,  True,  True,  True,  True,
         True],
       [ True,  True,  True,  True,  True,  True,  True,  True,  True,
         True],
       [ True,  True,  True,  True,  True,  True,  True,  True,  True,
         True],
       [ True,  True,  True,  True,  True,  True,  True,  True,  True,
         True],
       [ True,  True,  True,  True,  True,  True,  True,  True,  True,
         True]])
profile
꾸준함이란 ... ?

0개의 댓글