카테고리 없음

python - numpy(6) 배열의 인덱싱

mini_world 2020. 3. 29. 18:47
목차 접기
"""
배열 인덱싱 : fancy indexing
"""

import numpy as np

a = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
idx = np.array([True, False, True, False, True,
                False, True, False, True, False])

print('불리언 인덱싱:', a[idx])  # TRUE는 리턴해주고, False는 안해줌


# 조건문을 이용한 연산
print(a % 2 == 0)
print(a[a % 2 == 0])

# 정수 배열 인덱싱 : 인덱스 배열의 요소 각각이 ndarray객체를 가리키는 인덱스 정수여야 함
a = np.array([11, 22, 33, 44, 55, 66, 77, 88, 99])
idx = np.array([0, 2, 4, 6, 8])
print(a[idx])  # a[0], a[2], a[4], a[6], a[8] 출력되는 결과
# 배열인덱스의 크기는 달라도 상관없음
# 인덱스가 배열의 범위를 벗어나는 경우 에러

idx = np.array([0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 8, 8, 8, 8, 8, 8, 6])
print(a[idx])


# 다차원 배열의 인덱싱
x = np.array([[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]])
print(x[:, [True, False, True, False]])


'''
Question
1. 3의 배수를 출력
2. 4로 나누면 1이 남는수 출력
3. 3으로 나누면 나누어지고, 4로 나누면 1이 남는 수를 출력
'''
x = np.array([[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],[11, 12, 13, 14, 15, 16, 17, 18, 19, 20]])

print(
    '1. 3의 배수를 출력:', x[x % 3 == 0],
    '\n2. 4로 나누면 1이 남는수 출력:', x[x % 4 == 1],
    '\n3. 3으로 나누면 나누어지고, 4로 나누면 1이 남는 수를 출력:', x[(x % 3 == 0) & (x % 4 == 1)]
      )

 

[코드 실행 결과]

불리언 인덱싱: [0 2 4 6 8]
[ True False  True False  True False  True False  True False]
[0 2 4 6 8]
[11 33 55 77 99]
[11 11 11 11 11 66 66 66 66 66 66 99 99 99 99 99 99 77]
[[ 0  2]
 [ 4  6]
 [ 8 10]]
1. 3의 배수를 출력: [ 3  6  9 12 15 18] 
2. 4로 나누면 1이 남는수 출력: [ 1  5  9 13 17] 
3. 3으로 나누면 나누어지고, 4로 나누면 1이 남는 수를 출력: [9]

728x90