[Python] NumPy 배열 조회

참조


배열 속성 정보

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

이 글을 공유하기

댓글

Designed by JB FACTORY