배열 인덱싱(Array indexing) |
>>> import numpy as np
>>> a = np.array([[1,2,3,4,],[5,6,7,8],[9,10,11,12]])
>>> print a
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
>>> b = a[:2,1:4] # 0부터 2앞행까지 (0~1행), 1부터 4앞열까지 (1~3열) 잘라서 b배열에 넣는다.
>>> print b
[[2 3 4]
[6 7 8]]
>>> print a[0,1]
2
>>> b[0,0] = 100
>>> print a[0,1] # b의 [0,0]를 바꾸었는데 원본(a)도 같이 바뀌었다.
100
b[0,0]은 a[0,1]와 같은 데이터 조각이다. 따라서 하나를바꾸면 다른 하나도 바뀐다.
>>> import numpy as np
>>> a = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
>>> print a
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
>>> row_r1 = a[1,:] # a의 1행으로 구성된 1차원 배열이 만들어 진다.
>>> row_r2 = a[1:2,:]# a의 1행으로 구성된 2차원 배열이 만들어 진다.
>>> print row_r1, row_r1.shape
[5 6 7 8] (4,)
>>> print row_r2, row_r2.shape
[[5 6 7 8]] (1, 4)
>>> col_r1 = a[:,1] # a의 1열로 구성된 1차원 배열이 만들어 진다.
>>> col_r2 = a[:,1:2] # a의 1열로 구성된 2차원 배열이 만들어 진다.
>>> print col_r1,col_r1.shape
[ 2 6 10] (3,)
>>> print col_r2,col_r2.shape
[[ 2]
[ 6]
[10]] (3, 1)
배열 인덱싱시에 콜론(:)없이 정수값을 적어주면 1차원배열이 생성된다는것을 알수있다.
>>> import numpy as np
>>> a = np.array([[1,2],[3,4],[5,6]])
>>> print a
[[1 2]
[3 4]
[5 6]]
>>> print a[ [0,1,2], [0,1,0] ] # a[0,0] a[1,1] a[2,0]을 성분으로 한 1차원배열(모양은 (3,))을 출력해준다.
[1 4 5]
>>> print np.array( [ a[0,0], a[1,1], a[2,0] ]) # 위의 배열 인덱싱과 같다.
[1 4 5]
>>> print a[ [0,0], [1,1] ] # a[0,1] a[0,1]을 성분으로 한 1차원배열(모양은 (2,))을 출력해준다.
[2 2]
>>> print np.array( [ a[0,1], a[0,1] ] ) # 위의 배열 인덱싱과 같다.
[2 2]
>>> import numpy as np
>>> a = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
>>> print a
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
>>> b = np.array([0,2,0,1])
>>> print a[np.arange(4),b] # np.arange(4) -> [0,1,2,3]
[ 1 6 7 11]
>>> a[np.arange(4),b] += 10 # 각 성분에 10을 더해준다.
>>> print a
[[11 2 3]
[ 4 5 16]
[17 8 9]
[10 21 12]]
>>>
a[np.arange(4),b]는 a[[0,1,2,3],[0,2,0,1]]과 같다.
즉, [ a[0,0], a[1,2], a[2,0], a[3,1] ]과 같다.
>>> import numpy as np
>>> a = np.array([[1,2],[3,4],[5,6]])
>>> print a
[[1 2]
[3 4]
[5 6]]
>>> bool_idx = (a > 2) # a의 성분중에서 2보다 큰값은 True 아니면 False로 a와 같은 shape배열로 생성된다.
>>> print bool_idx
[[False False]
[ True True]
[ True True]]
>>> print a[bool_idx] # a의 원소 중에서 bool_idx배열의 True에 상응하는 원소를 1차원 배열로 출력한다.
[3 4 5 6]
>>> print a[a > 2] # a의 원소 중에서 2보다 큰값을 출력한다.
[3 4 5 6]
'FALL in > G.MA's 파이썬' 카테고리의 다른 글
[파이썬 Numpy] - 배열 수학 (0) | 2016.03.28 |
---|---|
[파이썬 Numpy] - 데이터 타입 (0) | 2016.03.28 |
[파이썬 Numpy] - 배열 (1) | 2016.03.28 |
[파이썬 클래스] (0) | 2016.03.26 |
[파이썬 함수] (0) | 2016.03.26 |