갈루아의 반서재

Array item selection and manipulation


Boolean array 의 array selectors 로의 활용

>>> a = np.array([[6,4],[5,9]], float)
>>> print a
[[ 6.  4.]
 [ 5.  9.]]
>>> a >= 6

# Boolean array 는 array selectors 로 사용가능하다
array([[ True, False],
       [False,  True]], dtype=bool)

# True인 원소만 반환
>>> a[a>=6]
array([ 6.,  9.])


Integer arrays의 사용

>>> a = np.array([2,4,6,8], float)
>>> b = np.array([0,0,1,3,2,1], int)
>>> print a
[ 2.  4.  6.  8.]
>>> print b
[0 0 1 3 2 1]

# integer array 는 마치 인덱스처럼 사용가능하다

# 즉 아래 a[b]는 배열 a의 0번째, 0번째, 첫번째, 세번째, 두번째, 첫번째 원소를 나열하는 셈이 된다.

>>> a[b]
array([ 2.,  2.,  4.,  8.,  6.,  4.])
>>>


>>> 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)
>>> print a
[[  1.   4.]
 [  9.  16.]]

# 다차원열에서는 각각의 축에 대한 인덱스로 작용한다.

>>> a[b,c]
array([  1.,   4.,  16.,  16.,   4.])
>>>


take() - Integer arrays 와 같은 기능 수행
>>> a = np.array([2, 4, 6, 8], float)
>>> b = np.array([0, 0, 1, 3, 2, 1], int)
>>> a.take(b)
array([ 2.,  2.,  4.,  8.,  6.,  4.])
>>>


>>> a = np.array([[0, 1], [2, 3]], float)
>>> print a
[[ 0.  1.]
 [ 2.  3.]]
>>> b = np.array([0, 0, 1], int)
>>> print b
[0 0 1]

# axis 인수 사용 가능

>>> a.take(b, axis=0)
array([[ 0.,  1.],
       [ 0.,  1.],
       [ 2.,  3.]])
>>> a.take(b, axis=1)
array([[ 0.,  0.,  1.],
       [ 2.,  2.,  3.]])
>>>


put() - take() 와 반대되는 기능 수행

>>> a = np.array([0, 1, 2, 3, 4, 5], float)
>>> b = np.array([9, 8, 7], float)
>>> print a
[ 0.  1.  2.  3.  4.  5.]
>>> print b
[ 9.  8.  7.]

# 배열 a의 0번째, 3번째 원소의 값을 배열 b 의 값으로 대체

# 대체되는 값의 순서는 배열 b의 순서대로

>>> a.put([0,3], b)
>>> a
array([ 9.,  1.,  2.,  8.,  4.,  5.])
>>> a.put([1,5], b)
>>> a
array([ 9.,  9.,  2.,  8.,  4.,  8.])
>>> a.put([0,3,4], b)
>>> a
array([ 9.,  9.,  2.,  8.,  7.,  8.])
>>> a.put([0,3,4,5], b)
>>> a
array([ 9.,  9.,  2.,  8.,  7.,  9.])
>>>