[파이썬 Example #007] numpy 다루기

2019. 10. 17. 15:46컴퓨터_Com/파이썬 지식_Things to remember

참조: http://taewan.kim/post/numpy_cheat_sheet/

 

파이썬 데이터 사이언스 Cheat Sheet: NumPy 기초, 기본

NumPy 기본 사용법을 정리합니다. 사용법, 가이드, 문서, 메뉴얼, 기본 문서

taewan.kim

1. N x N 배열에 있는 숫자 세기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
cmap = np.array([[26102969471],
                [6662262241],
                [10627225371],
                [227621047101],
                [9222287411],
                [66210892610],
                [9254723110],
                [4237461100],
                [74710111000],
                [1111100000]])
 
    mp_map = np.array([[1222222220],
                       [2444444440],
                       [2444444440],
                       [2444444440],
                       [2444444400],
                       [2444444400],
                       [2444444000],
                       [2444440000],
                       [2444000000],
                       [0000000000]])
    fa = np.array([[012345678910],
                   [0000000000,  0]])
cs

위와 같은 numpy 배열 3개가 있다. cmap 배열에서 각 숫자 (0에서 10)가 몇개씩 있는지 확인하고 싶을 때 요렇게 한다.

1
2
3
4
5
 for i in range(len(cmap)):
     for j in range(len(cmap)):
         fa[1, cmap[i, j]] = fa[1, cmap[i, j]] + 1
 
 np.sum(fa[1:])
cs

만약 cmap에 있는 숫자들에 mp_map에 있는 숫자들만큼 가중치를 곱한 다름 숫자를 세고 싶다면, 하나씩 더하는 것이 아니고 가중치 만큼을 더하면 된다. 

1
2
3
4
5
 for i in range(len(cmap)):
     for j in range(len(cmap)):
         fa[1, cmap[i, j]] = fa[1, cmap[i, j]] + mp_map[i, j]
 
 np.sum(fa[1:])
cs

2. Octantal map(1/8)을 Qaurter map(1/4)으로 바꾸기

출처: https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.triu_indices.html

 

numpy.triu_indices — NumPy v1.15 Manual

Returns: inds : tuple, shape(2) of ndarrays, shape(n) The indices for the triangle. The returned tuple contains two arrays, each with the indices along one dimension of the array. Can be used to slice a ndarray of shape(n, n).

docs.scipy.org