[Numpy] 인덱싱과 슬라이싱

8178 단어 numpynumpy

인덱싱

  • 파이썬 리스트와 동일한 개념으로 사용
  • 인덱싱을 하면 차원이 준다는 점을 유의!

1차원 벡터 인덱싱

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

2차원 행렬 인덱싱

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

3차원 텐서 인덱싱

x = np.arange(36).reshape(3, 4, 3)
print(x)
[[[ 0  1  2]
  [ 3  4  5]
  [ 6  7  8]
  [ 9 10 11]]

 [[12 13 14]
  [15 16 17]
  [18 19 20]
  [21 22 23]]

 [[24 25 26]
  [27 28 29]
  [30 31 32]
  [33 34 35]]]
print(x[0])
print(x[0, 0])
[100   1   2   3   4]
100

슬라이싱

  • 리스트, 문자열 slicing과 동일한 개념으로 사용
  • 슬라이싱은 차원이 바뀌지는 안는다는 점을 주의!

1차원 벡터 슬라이싱

x = np.arange(10)
x[1:5]
array([1, 2, 3, 4])

2차원 행렬 슬라이싱

x = np.arange(10).reshape(2, 5)
print(x)
[[0 1 2 3 4]
 [5 6 7 8 9]]
x[:, 1:3] #행은 전체 행, 열은 2열과 3열을 슬라이싱
array([[1, 2],
       [6, 7]])

3차원 텐서 슬라이싱

x = np.arange(36).reshape(3, 4, 3)
print(x)
[[[ 0  1  2]
  [ 3  4  5]
  [ 6  7  8]
  [ 9 10 11]]

 [[12 13 14]
  [15 16 17]
  [18 19 20]
  [21 22 23]]

 [[24 25 26]
  [27 28 29]
  [30 31 32]
  [33 34 35]]]
y = x[:1, :2, :] #깊이, 행, 열 순서
print(y)
print(y.shape) #2행3열의 깊이 1인 shape인것을 확인할 수 있다.
[[[0 1 2]
  [3 4 5]]]
(1, 2, 3)
print(y.ndim) #슬라이싱을 통해 차원이 줄어들지 않음을 알 수 있다.
3

좋은 웹페이지 즐겨찾기