Numpy part III¶
comparison¶
All & Any¶
- Array의 데이터 전부(and) 또는 일부(or)가 조건에 만족 여부 반환
In [1]:
import numpy as np
In [2]:
a = np.arange(10)
a
Out[2]:
In [3]:
a < 4
Out[3]:
In [4]:
np.all(a < 10)
Out[4]:
all
: 모든 조건에 만족하면 True, 아니면 False
In [5]:
np.any(a > 5), np.any(a < 0)
Out[5]:
In [6]:
np.all(a > 5), np.all(a < 10)
Out[6]:
In [7]:
test_a = np.array([1, 3, 0], float)
test_b = np.array([5, 2, 1], float)
In [8]:
test_a > test_b
Out[8]:
In [9]:
(test_a > test_b).any()
Out[9]:
In [10]:
a = np.array([1, 3, 0], float)
a > 0
Out[10]:
In [11]:
print(np.logical_and(a>0,a<3)) # and조건의 condition
print((a>0)&(a<3))
- logical_and()는
&
와 같다
In [12]:
b = np.array([True, False, True], bool)
print(np.logical_not(b)) # Not 조건의 condition
print(~b)
- logical_not()은
~
와 같다
In [13]:
c = np.array([False, True, False], bool)
print(np.logical_or(b, c)) # OR 조건의 condition
print(b|c)
- logical_or()은
|
와 같다
In [14]:
a=np.arange(10)
a
Out[14]:
In [15]:
np.where(a > 5, 3, 2) # where(condition, TRUE, FALSE)
Out[15]:
In [16]:
np.where(a > 5) # index 반환
Out[16]:
In [17]:
a = np.array([1, np.NaN, np.Inf], float)
np.isnan(a)
Out[17]:
np.isfinite()¶
- 발산하는 값이 아니면 True, 맞으면 False
np.inf
무한을 나타내는 발산 값이다.np.nan
은 의미로는 data값이 없음을 의미하지만 값으로 보면 발산 값이다.
In [18]:
np.isfinite(a)
Out[18]:
In [19]:
a = np.array([1, 2, 4, 5, 8, 78, 23, 3])
In [20]:
np.argmax(a), np.argmin(a)
Out[20]:
argsort()¶
- 정렬후 해당 원소의 index반환
In [21]:
a.argsort()[::]
Out[21]:
- 오름차순으로 정렬후 해당 인덱스 반환
In [22]:
a.argsort()[::-1]
Out[22]:
- 내림차순으로 정렬후 해당 인덱스 반환
axis 기반의 반환
In [23]:
a = np.array([[1, 2, 4, 7], [9, 88, 6, 45], [9, 76, 3, 4]])
a
Out[23]:
In [24]:
np.argmax(a, axis=1), np.argmin(a, axis=0)
Out[24]:
boolean & fancy index¶
boolean index¶
- 특정 조건에 따른 값을 배열 형태로 추출
- Comparison operation 함수들도 모두 사용 가능
In [25]:
test_array = np.array([1, 4, 0, 2, 3, 8, 9, 7], float)
test_array > 3
Out[25]:
In [26]:
test_array[test_array > 3]
Out[26]:
- 조건이 True인 index의 element만 추출
In [27]:
condition = test_array < 3
test_array[condition]
Out[27]:
In [28]:
a = np.array([2, 4, 6, 8], float)
b = np.array([0,0,1,3,2,1],int) # 반드시 integer로 선언
a[b]
Out[28]:
In [29]:
a.take(b) # take함수: bracket index와 같은 효과
Out[29]:
take()
함수의 사용으로 같은 효과
In [30]:
a = np.array([[1, 4], [9, 16]], float)
b = np.array([0, 0, 1, 1, 0], int)
c = np.array([0, 1, 1, 1, 1], int)
a[b, c] # b를 row index, c를 column index로 변환하여 표시함
Out[30]:
- matrix 형태의 데이터도 가능
In [31]:
a = np.array([[1, 4], [9, 16]], float)
b = np.array([0, 0, 1, 1, 0], int)
a[b] # 2D인데 하나 값만 있으므로 row값만 가지고 온다
Out[31]:
numpy data I/O¶
loadtxt & savetxt¶
In [32]:
data = np.loadtxt("./data/populations.txt", delimiter="\t") # 파일 읽기
data
Out[32]:
In [33]:
data_int= data.astype(int)
data_int_3=data_int[:3]
data_int_3
Out[33]:
In [34]:
np.savetxt("./data/int_data.csv", data_int, fmt="%.2e", delimiter=",")
- int_data.csv로 저장
numpy object - npy¶
In [35]:
np.save("./data/npy_test.npy", arr=data_int_3)
- numpy객체로 파일 저장
- 해당 파일은 pickle형태이다
In [36]:
data_test=np.load(file='./data/npy_test.npy')
data_test
Out[36]:
'AI > 이론' 카테고리의 다른 글
경사하강법 II (0) | 2021.01.26 |
---|---|
경사하강법 I (0) | 2021.01.26 |
행렬 (0) | 2021.01.25 |
벡터 (0) | 2021.01.25 |
Numpy part II (0) | 2021.01.25 |
Numpy part I (0) | 2021.01.25 |
Python data handling (0) | 2021.01.22 |
File & Exception & Log Handling (0) | 2021.01.22 |