IT학습/Library

[numpy] 배열의 인덱싱, 슬라이싱

바틀비 2024. 1. 8. 12:05

배열의 인덱싱과 슬라이싱

  • 파이썬 시퀀스 자료형의 인덱싱과 슬라이싱과 유사함
더보기
a1 = np.array([0, 1, 2, 3, 40, 5])

print(a1[0])
print(a1[-1])

"""
0
5
"""


#리스트를 통한 추출
a1[[0, 2, 4]]

"""array([ 0,  2, 40])"""

a2 = np.arange(10, 100, 10).reshape(3, 3)
a2

"""
array([[10, 20, 30],
       [40, 50, 60],
       [70, 80, 90]])
"""

2차원 배열의 인덱스 위치는 다음과 같다

배열[열, 행]

(0, 0) (0, 1) (0, 2)
(1, 0) (1, 1) (1, 2)
(2, 0) (2, 1) (2, 2)

print(a2[0, 1])
print(a2[1, 2])
print(a2[2, 1])

"""
20
60
80
"""

#배열값 업데이트
a2[0, 2] = 60
a2

"""
array([[10, 20, 60],
       [40, 50, 60],
       [70, 80, 90]])
"""

#행 하나 전체 출력
a2[1]

"""array([40, 50, 60])"""

#행 전체 업데이트
a2[1] = np.array([1, 2, 3]) 
a2

"""
array([[10, 20, 60],
       [ 1,  2,  3],
       [70, 80, 90]])
"""

#2차원 배열의 행과 열 위치를 지정해서 원소 추출. 위에서 좌표를 다시 확인하자
a2 = np.arange(10, 100, 10).reshape(3, 3)
print(a2)

"""
[[10 20 30]
 [40 50 60]
 [70 80 90]]
"""

a2[[0,2],[0,1]]
# [(0, 0) 위치의 원소, (2,1)위치의 원소] 를 생성
# 배열[열, 행]

"""array([10, 80])"""

b1 = np.arange(0, 11)
b1

"""array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10])"""

b1[1:4]

"""array([1, 2, 3])"""

b1[0:11:2] #0이상 11미만, 2간격

"""array([ 0,  2,  4,  6,  8, 10])
"""

b1[1:4] = np.array([10, 20, 30])
b1

"""array([ 0, 10, 20, 30,  4,  5,  6,  7,  8,  9, 10])
"""

b1[4:11] = 80
b1

"""array([ 0, 10, 20, 30, 80, 80, 80, 80, 80, 80, 80])
"""

b2 = np.arange(10, 100, 10).reshape(3, 3)
b2

"""
array([[10, 20, 30],
       [40, 50, 60],
       [70, 80, 90]])
"""

b2[0:2, 1:3] #열: 0부터 1까지, 행: 1부터 2까지

"""
array([[20, 30],
       [50, 60]])
"""

list1 = [1, 2, 3, ["a","b"]]
list1[3][1] #중첩 리스트의 3번째 인덱스의 1번째 인덱스

"""
'b'
"""

b2 = np.arange(10, 100, 10).reshape(3, 3)
b2
print(b2[1])
print(b2[1][0:2]) #b2의 1인덱스 행의 0부터 2미만 행 원소들

"""
[40 50 60]
[40 50]
"""