열렬히.뛰기

인덱싱과 슬라이싱

Language > 프로그래밍 언어 > Python > 파이썬 : 데이터 핸들링 > 인덱싱과 슬라이싱

인덱싱

python
# 1차원
a1 = np.array([i for i in range(0, 60, 10)])
a1[0]
>>> 0
a1[4]
>>> 40
a1[[1,3,4]]
>>> array([10, 30, 40])

# 2차원
a2 = np.arange(10, 100, 10).reshape(3, 3)
a2[0,2] # 특정 행, 열 위치의 원소값
>> 30

a2[2,2] = 95 # 특정 행, 열 위치의 원소값 변경
a2
>> array([[10, 20, 30],
	        [40, 50, 60],
		      [70, 80, 95]])

a2[1] # 특정 행 전체를 불러들이기
>> array([40, 50, 60])

# example
# case1
arr4 = np.arange(1, 11).reshape(2, 5)
arr4
>>> array([[ 1,  2,  3,  4,  5],
		       [ 6,  7,  8,  9, 10]])

arr4.dtype
>>> dtype('int32')
arr4[1,2]
>>> 8
arr4[0,:]
>>> array([1, 2, 3, 4, 5])
arr4[:,0]
>>> array([1, 6])

print(arr4.sum(axis=0))
>>> [ 7  9 11 13 15]
print(arr4.sum(axis=1))
>>> [15 40]
print(arr4[arr4 > 3])
>>> [ 4  5  6  7  8  9 10]
print(arr4[ (arr4 % 2) == 0] )
>>> [ 2  4  6  8 10]
print(arr4[ (arr4 % 2) == 1] )
>>> [1 3 5 7 9]

슬라이싱

python
# 슬라이싱
# 1차원
b1 = np.array([i for i in range(0, 60, 10)])
print(b1)
>>> [ 0 10 20 30 40 50]
b1[1:4]
>>> array([10, 20, 30])
b1[-5:-2]
>>> array([10, 20, 30])
b1[:3] # 시작위치 지정 x
>>> array([ 0, 10, 20])
b1[2:] # 끝 위치 지정 x
>>> array([20, 30, 40, 50])

b1[2:5] = np.array([25, 35, 45])
print(b1)
>>> [ 0 10 25 35 45 50]

b1[3:6] = 60
print(b1)
>>> [ 0 10 25 60 60 60]


# 2차원
b2 = np.arange(10, 100, 10).reshape(3, 3)
print(b2)
>>> [[10 20 30]
		 [40 50 60]
		 [70 80 90]]

b2[1]
>>> array([40, 50, 60])
b2[0:2]
>>> array([[10, 20, 30],
		       [40, 50, 60]])
b2[1][0:2]
>>> array([40, 50])

b2[1:3, 1:3]
>>> array([[50, 60],
		       [80, 90]])

b2[:3, 1:]
>>> array([[20, 30],
		       [50, 60],
		       [80, 90]])
b2[0:2, 1:3]
>>> array([[20, 30],
		       [50, 60]])

b2[0:2, 1:3] = np.array([[25, 35], [55, 65]])
b2
>>> array([[10, 25, 35],
		       [40, 55, 65],
		       [70, 80, 90]])