donut

Python Numpy3

Module/Numpy

 

 

 

 

Numpy3

지난 넘피1,2에 이어 3번째 포스팅입니다.
2편에서 마무리 짓지 못하고 3번째 까지 왔네요
너무 방대한 양이다보니... 그래도 인공지능으로 넘어가기전 알고가야할 부분이니까 열심히 해야겠죠?

2편에서 마무리 짓지 못했던 numpy 특수계산, 크기비교를 알아보도록 하겠습니다.

In [86]:
import numpy as np
 

numpy all&any

any = 배열 원소값중 어떤 값들 중 하나라도 조건에 만족하면 True를 반환

all = 모든 원소값이 조건을 만족하면 True를 반환

In [87]:
test = np.arange(10)
test
Out[87]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [88]:
np.any(test>4) #원소값중 4보다 큰 값이 존재 함으로 True
Out[88]:
True
In [107]:
np.all(test>4) #모든 원소값이 4보단 크지 않기때문에 False
Out[107]:
False
In [108]:
np.all(test>=0)#모든 원소값은 0보다 크거나 같기 때문에 True
Out[108]:
True
 

Numpy 크기 비교

In [91]:
test1 = np.array([1,20,33])
test2 = np.array([10,10,10])
print(test1>test2)#배열의 각 인덱스별 크기 비교
print(test1==test2)
print((test1>test2).any())#배열의 각인덱스별 크기 비교중 하나라도 만족한다면 True
print((test1>test2).all())#배열의 각인덱스별 크기 비교중 모두 만족한다면 True
 
[False  True  True]
[False False False]
True
False
In [113]:
#앞서 크기비교 한것을 2차원배열로 확장
test1 = np.array([[10,20,33],[11,22,33]])
test2 = np.array([[10,10,10],[100,1,0]])
print(test1>test2)
print(test1>20)
print(test1==test2)
print((test1>test2).any())
print((test1>test2).all())
 
[[False  True  True]
 [False  True  True]]
[[False False  True]
 [False  True  True]]
[[ True False False]
 [False False False]]
True
False
 

Numpy 크기 비교2

np.logical_and

np.logical_not

Np.logical_or

In [110]:
test1 = np.array([1,20,33])
np.logical_and(test1>0,test1<10)#두 조건을 만족한다면 True
Out[110]:
array([ True, False, False])
In [111]:
test2 = np.array([False,True,True])
np.logical_not(test2)#반대값 출력 
Out[111]:
array([ True, False, False])
In [112]:
test3 = np.array([False,False,True])
np.logical_or(test2,test3)#하나라도 True라면 True 반환
Out[112]:
array([False,  True,  True])
 

Numpy where

np.where(조건, 참일때 반환할 값, 거짓일때 반환할 값)

In [122]:
test1 = np.array([1,20,33])
np.where(test1>5,100,2)
Out[122]:
array([  2, 100, 100])
In [123]:
test2 = np.arange(10)
np.where(test2>4) #배열 원소값이 4보다 큰 값들의 인덱스를 반환
Out[123]:
(array([5, 6, 7, 8, 9]),)
In [129]:
test3 = np.array([1,10,4,5,6,50,1,100])
np.where(test3>4)#배열 원소값이 4보다 큰 값들의 인덱스를 반환
Out[129]:
(array([1, 3, 4, 5, 7]),)
In [125]:
test4 = np.array(["1", 2,"2" ,np.NaN, np.Inf], float)
np.isnan(test4)#Not a Number숫자가 아닌, / Infinity 무한대 
Out[125]:
array([False, False, False,  True, False])
 

Numpy argmax & argmin

In [126]:
test1 = np.array([1,10,4,5,6,50,1,100])
np.argmax(test1), np.argmin(test1)# 배열값중 최대값 , 최소값의 인덱스 추출
Out[126]:
(7, 0)
In [131]:
test2 = np.array([[111,222,333],[555,666,777],[123,633,768]])
test2,np.argmax(test2), np.argmin(test2)#다차원 배열에서도 적용가능, 인덱스를 새는 방법에 주목
Out[131]:
(array([[111, 222, 333],
        [555, 666, 777],
        [123, 633, 768]]),
 5,
 0)
In [132]:
np.argmax(test2, axis=1) , np.argmin(test2,axis=0)#axis를 활용하여 접근 / 1은 가로로, 0은 세로로
Out[132]:
(array([2, 2, 2]), array([0, 0, 0]))
 

Numpy boolean index

In [133]:
test1 =np.array([
    [1,2,3,4,5,6,7,8,9,10],
    [1,2,3,4,5,6,7,8,9,10],
    [1,2,3,4,5,6,7,8,9,10],
    [1,2,3,4,5,6,7,8,9,10],
    [1,2,3,4,5,6,7,8,9,10],
    [1,2,3,4,5,6,7,8,9,10]
])
test2 = test1 < 5#값들이 5보다 작다면 False
test2
Out[133]:
array([[ True,  True,  True,  True, False, False, False, False, False,
        False],
       [ True,  True,  True,  True, False, False, False, False, False,
        False],
       [ True,  True,  True,  True, False, False, False, False, False,
        False],
       [ True,  True,  True,  True, False, False, False, False, False,
        False],
       [ True,  True,  True,  True, False, False, False, False, False,
        False],
       [ True,  True,  True,  True, False, False, False, False, False,
        False]])
In [134]:
test2.astype(np.int)#True는 1, False는0으로 변환
Out[134]:
array([[1, 1, 1, 1, 0, 0, 0, 0, 0, 0],
       [1, 1, 1, 1, 0, 0, 0, 0, 0, 0],
       [1, 1, 1, 1, 0, 0, 0, 0, 0, 0],
       [1, 1, 1, 1, 0, 0, 0, 0, 0, 0],
       [1, 1, 1, 1, 0, 0, 0, 0, 0, 0],
       [1, 1, 1, 1, 0, 0, 0, 0, 0, 0]])
 

이상으로 numpy 포스팅을 마칩니다.
너무 방대한 양이라 빠진부분들도 있습니다.
네이버 부스트코스 파이썬을 참고하였습니다.

In [ ]:
 

'Module > Numpy' 카테고리의 다른 글

Python Numpy2  (0) 2020.07.12
Python Numpy1  (0) 2020.07.12