python

[numpy] numpy 2차원 색인 | 색인을 이용한 값 변경

전감자(◔◡◔) 2022. 9. 29. 01:12
'''
     색인을 활용한 값 변경
    1. 인덱싱 이용한 데이터 변경
    2. 슬라이싱 이용한 데이터 변경
    3. fancy 색인 이용한 데이터 변경
    4. boolean 색인 이용한 데이터 변경
'''
import numpy as np

arr = np.arange(10)
print(arr) # [0 1 2 3 4 5 6 7 8 9]

# 1. 인덱싱 이용한 데이터 변경
arr[0] = 100
print(arr) # [100   1   2   3   4   5   6   7   8   9]

# 2. 슬라이싱 이용한 데이터 변경
# 가. 일반 파이썬
x = list(range(9))
print(x) # [0, 1, 2, 3, 4, 5, 6, 7, 8]
# x[0:3] = 100 # broadcasting 불가
x[0:3] = [100,200,300] # shape 일치하면 일반 파이썬도 슬라이싱 데이터 변경 가능
print(x)

# 나. numpy의 ndarray
arr = np.arange(10)
print(arr) # [0 1 2 3 4 5 6 7 8 9]
arr[0:3] = 100 # broadcasting 가능
print(arr) # [100 100 100   3   4   5   6   7   8   9]

#  3. fancy 색인 이용한 데이터 변경
arr = np.arange(10)
print(arr) # [0 1 2 3 4 5 6 7 8 9]
arr[[0,2,4]] = 100
print(arr) # [100   1 100   3 100   5   6   7   8   9]

# 모든 값 변경
arr[:] = 999
arr[...] = 888
print(arr)

# 4. boolean 색인 이용한 데이터 변경
arr = np.arange(10)
print(arr) # [0 1 2 3 4 5 6 7 8 9]
arr[arr%2==0] = 100
print(arr) # [100   1 100   3 100   5 100   7 100   9]