[Python] NumPy 배열 조회
- 파이썬(Python)
- 2022. 2. 18. 17:46
참조
배열 속성 정보
import numpy as np
def array_info(array):
print(array)
print("ndim:", array.ndim)
print("shape:", array.shape)
print("type:", array.dtype)
print("size:", array.size)
print("itemsize:", array.itemsize)
print("nbytes:", array.nbytes)
print("strides:", array.strides) # 하나의 요소를 넘어가기 위한 단위
# 1차원
a1 = np.array([1,2,3,4,5])
# 2차원
a2 = np.array([[1,2,3], [4,5,6], [7,8,9]])
# 3차원
a3 = np.array([ [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] ])
array_info(a1)
array_info(a2)
array_info(a3)
[1 2 3 4 5]
ndim: 1
shape: (5,)
type: int32
size: 5
itemsize: 4
nbytes: 20
strides: (4,)
[[1 2 3]
[4 5 6]
[7 8 9]]
ndim: 2
shape: (3, 3)
type: int32
size: 9
itemsize: 4
nbytes: 36
strides: (12, 4)
[[[1 2 3]
[4 5 6]
[7 8 9]]
[[1 2 3]
[4 5 6]
[7 8 9]]
[[1 2 3]
[4 5 6]
[7 8 9]]]
ndim: 3
shape: (3, 3, 3)
type: int32
size: 27
itemsize: 4
nbytes: 108
strides: (36, 12, 4)
인덱싱(Indexing)
import numpy as np
# 1차원
a1 = np.array([1,2,3,4,5])
# 2차원
a2 = np.array([[1,2,3], [4,5,6], [7,8,9]])
# 3차원
a3 = np.array([ [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] ])
# 1차원 인덱싱
print(a1)
print(a1[0])
print(a1[2])
print(a1[-1])
print(a1[-3])
# 2차원 인덱싱
print(a2)
print(a2[0, 0])
print(a2[0, 2])
print(a2[1, 1])
print(a2[2, -1])
# 3차원 인덱싱
print(a3)
print(a3[0, 0, 0])
print(a3[1, 1, 1])
print(a3[2, 2, 1])
print(a3[2, -2, -1])
[1 2 3 4 5]
1
3
5
3
[[1 2 3]
[4 5 6]
[7 8 9]]
1
3
5
9
[[[1 2 3]
[4 5 6]
[7 8 9]]
[[1 2 3]
[4 5 6]
[7 8 9]]
[[1 2 3]
[4 5 6]
[7 8 9]]]
1
5
8
6
슬라이싱(Slicing)
- 슬라이싱 구문 : a[start:stop:step]
- 기본값: start=0. stop=ndim, step=1
import numpy as np
def array_info(array):
print(array)
print("ndim:", array.ndim)
print("shape:", array.shape)
print("type:", array.dtype)
print("size:", array.size)
print("itemsize:", array.itemsize)
print("nbytes:", array.nbytes)
print("strides:", array.strides) # 하나의 요소를 넘어가기 위한 단위
# 1차원
a1 = np.array([1,2,3,4,5])
# 2차원
a2 = np.array([[1,2,3], [4,5,6], [7,8,9]])
# 3차원
a3 = np.array([ [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] ])
print(a1)
print(a1[0:2])
print(a1[0:])
print(a1[:1])
print(a1[::2])
print(a1[::-1])
print(a2)
print(a2[1])
print(a2[1, :])
print(a2[:2, :2])
print(a2[1:, ::-1])
print(a2[::-1, ::-1])
[1 2 3 4 5]
[1 2]
[1 2 3 4 5]
[1]
[1 3 5]
[5 4 3 2 1]
[[1 2 3]
[4 5 6]
[7 8 9]]
[4 5 6]
[4 5 6]
[[1 2]
[4 5]]
[[6 5 4]
[9 8 7]]
[[9 8 7]
[6 5 4]
[3 2 1]]
불리언 인덱싱(Bollean Indexing)
- 배열 각 요소의 선택 여부를 불리언(True or False)로 지정
- True 값인 인덱스의 값만 조회
import numpy as np
# 1차원
a1 = np.array([1,2,3,4,5])
# 2차원
a2 = np.array([[1,2,3], [4,5,6], [7,8,9]])
# 3차원
a3 = np.array([ [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] ])
print(a1)
bi = [False, True, True, True, False]
print(a1[bi]) # Ture인 값만 출력
bi = [True, False, True, False, True]
print(a1[bi])
print(a2)
bi = np.random.randint(0, 2, (3, 3), dtype=bool)
print(bi)
print(a2[bi])
[1 2 3 4 5]
[2 3 4]
[1 3 5]
[[1 2 3]
[4 5 6]
[7 8 9]]
[[ True False True]
[ True False False]
[ True True True]]
[1 3 4 7 8 9]
팬시 인덱싱(Fancy Indexing)
import numpy as np
# 1차원
a1 = np.array([1,2,3,4,5])
# 2차원
a2 = np.array([[1,2,3], [4,5,6], [7,8,9]])
# 3차원
a3 = np.array([ [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] ])
print(a1)
print([a1[0], a1[2]])
index = [0, 2]
print(a1[index])
index = np.array([[0, 1],
[2, 0]])
print(a1[index])
print(a2)
row = np.array([0, 2])
col = np.array([1, 2])
print(a2[row, col])
print(a2[row, :])
print(a2[:, col])
print(a2[row, 1])
print(a2[2, col])
print(a2[row, 1:])
print(a2[1:, col])
[1 2 3 4 5]
[1, 3]
[1 3]
[[1 2]
[3 1]]
[[1 2 3]
[4 5 6]
[7 8 9]]
[2 9]
[[1 2 3]
[7 8 9]]
[[2 3]
[5 6]
[8 9]]
[2 8]
[8 9]
[[2 3]
[8 9]]
[[5 6]
[8 9]]
728x90
'파이썬(Python)' 카테고리의 다른 글
[Python] NumPy 배열 변환 (0) | 2022.02.18 |
---|---|
[Python] NumPy 배열 값 삽입/수정/삭제/복사 (0) | 2022.02.18 |
[Python] NumPy 배열 생성 (0) | 2022.02.18 |
[Python] 라이브러리 (0) | 2022.02.09 |
[Python] 내장 함수 (0) | 2022.02.09 |
이 글을 공유하기