import numpy as np
보통 다음과 같이 사용하며 numpy를 np로 줄여서 사용
# numpy array 만들기 - 1차원
arr = np.array([1, 2, 3, 4, 5])
print(arr) # 출력 결과 >> [1 2 3 4 5]
print(type(arr)) # 출력 결과 >> <class 'numpy.ndarray'>
# 2차원 numpy array
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2) # 출력 결과 >> [[1 2 3]
# [4 5 6]]
# 3차원 numpy array
arr3 = np.array([[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]])
print(arr3) # 출력 결과 >> [[[1 2 3]
# [4 5 6]]
#
# [[1 2 3]
# [4 5 6]]]
arr = np.array([1, 2, 3, 4])
print(arr[0]) # 출력 결과 >> 1
print(arr[1]) # 출력 결과 >> 2
print(arr[2] + arr[3]) # 출력 결과 >> 7
# negative indexing
arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
print('2번째 차원의 마지막 개체 : ', arr[1, -1])
# 출력 결과 >> 10
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(arr[1:5]) # 출력 결과 >> [2 3 4 5]
print(arr[1:5:2]) # 출력 결과 >> [2 4]
print(arr[:3]) # 출력 결과 >> [1 2 3]
print(arr[5:]) # 출력 결과 >> [6 7 8 9 10]
print(arr[-4:-1]) # 출력 결과 >> [7 8 9]
# 2차원 array slicing - 두 번째 요소에서 index 1부터 2까지 반환
arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
print(arr[1, 1:3]) # 출력 결과 >> [7 8]
# 2차원 array slicing - 각 요소에서 index 2의 요소 반환
print(arr[0:2, 2]) # 출력 결과 >> [3 8]
# 2차원 array slicing - 각 요소에서 index 1부터 3까지의 요소 반환
print(arr[0:2, 1:4]) # 출력 결과 >> [[2 3 4]
# [7 8 9]]
arr.ndim >> ndim은 (numpy)dimension으로 arr의 차원 확인
arr = np.array([1, 2, 3, 4], ndmin=5) >> arr을 ndmin을 사용해 5차원으로 만듦
i : integer
b : boolean
u : unsigned integer
f : float
c : comples float
m : timedelta
M : datetime
O : object
S : string
U : unicode string
V - fixed chunk of memory for other type(void)
# 데이터타입 확인 - 정수
arr = np.array([1, 2, 3, 4, 5])
print(arr.dtype) # 출력 결과 >> int64
# 데이터타입 확인 - 문자
arr = np.array(['아이폰', '아이패드', '애플워치', '에어팟 맥스'])
print(arr.dtype) # 출력 결과 >> <U6 6글자 이하의 유니코드를 의미
# array 생성 시 데이터타입 지정하기 - 4비트 integer로 지정
arr = np.array([1, 2, 3, 4, 5], dtype='i4') # dtype='i4'을 사용해서 4비트 integer로 만들어줌
print(arr)
print(arr.dtype)
# array 생성 시 데이터타입 지정하기 - String으로 지정
arr = np.array([1, 2, 3, 4, 5], dtype='S') # dtype='S'를 사용해서 String으로 만들어줌
print(arr)
print(arr.dtype)
# 1차원에서 3차원으로 변환
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newarr = arr.reshape(2, 3, 2)
print(newarr)
# 출력 결과
# [[[1 2]
# [3 4]
# [5 6]
#
# [[7 8]
# [9 10]
# [11 12]]]
# Flattening
arr = np.array([[1, 2, 3], [4, 5, 6]])
newarr = arr.reshape(-1)
print(newarr)
# 출력 결과 >> [1 2 3 4 5 6]
# 1차원 배열에서의 반복
arr = np.array([1, 2, 3])
for x in arr:
print(x)
# 출력 결과
# 1
# 2
# 3
# 2차원 배열에서의 반복 - 1
arr = np.array([[1, 2], [3, 4]])
for x in arr:
print(x)
# 출력 결과
# [1 2]
# [3 4]
# 2차원 배열에서의 반복 - 2
for x in arr:
for y in x:
print(y)
# 출력 결과
# 1
# 2
# 3
# 4
# concatenate()을 사용해 여러 개의 1차원 array를 연결해보자
arr1 = np.array([1, 2])
arr2 = np.array([3, 4])
arr = np.concatenate((arr1, arr2))
print(arr) # 출력 결과 >> [1 2 3 4]
# 2차원의 array를 axis=1 기준으로 연결해보자
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
arr = np.concatenate((arr1, arr2), axis=1)
print(arr)
# 출력 결과
# [[1 2 5 6]
# [3 4 7 8]]
# array_split()을 사용해 하나의 array를 3개로 만들어보자
arr = np.array([1, 2, 3, 4, 5, 6])
newarr = np.array_split(arr, 3)
print(newarr) # 출력 결과 >> [array([1, 2]), array([3, 4]), array([5, 6])]
이외에도 search(), sort(), filter() 함수가 있음