Numpy array 내용을 편집해보자(np.delete, np.insert)
넘파이의 Array는 파이썬의 기본 내장 list와 비슷하게 사용된다.
다만 배열을 단지 요소들의 집합으로만 보는게 아니라 연산을 위한 행렬로서 사용하기 위해선 Array사용이 필요하다.
물론 리스트도 연산에 사용 될 수 있지만 array에 비해 명확한 단점이 존재한다.
1. Array에 비해 연산 속도가 느리다
(array는 데이터가 인덱스와 함께 저장되기 때문에 숫자를 바로바로 꺼내서 연산을 할 수 있지만 list는 단지 데이터를 들어온 순서대로 넣은 형태이기 때문에 연산을 위해선 for문 등을 이용해 하나씩 꺼내서 계산하고 다시 넣어야 한다)
2. list 끼리의 연산이 불가능하다
list A + list B 는 그냥 A 뒤에 B 이어붙이기가 된다.
계산을 위해 Array를 사용하다 보면 리스트의 일부를 가져와 계산을 한 뒤에 다시 그 자리에 넣는 작업을 할 때가 있다.
예를 들면 sine wave data를 불러와 계산에 이용하려고 한다.
AC 데이터에 절대값(abs 함수 사용)을 취해 DC 형태로 만들려고한다.
근데 이 데이터가 정현파가 아니라 부분부분 oscillation이 존재하는 형태의 신호여서 abs를 사용하면 oscillation 신호가 손상되기 때문에 음의 신호부분만 따로 잘라내서 -를 곱해야 했다.
-를 곱하는 연산이 들어가 있어 list 슬라이싱 기법으로만 구현하기에 복잡했는데
numpy의 delete와 insert 함수를 이용해서 쉽게 구현할 수 있었다.

import numpy as np
# Array A에서 [5,7,9]만 -를 곱해서 [1,3,-5,-7,-9, 10]의 array로 만들고자함
A = np.array([1,3,5,7,9,10])
# Array B에 [-5, -7, -9]를 저장
B = np.array(-A[2:5])
# Array C에 A에서 [5, 7, 9]를 빼낸 나머지를 저장하고자 함
C = np.delete(A, range(2,5))
# Array D에는 C에 B를 집어넣은 Array를 저장
D = np.insert(C, 2, B)
np.delete의 문법은 np.delete(지우기전 전체 array, 인덱스 정수(또는 정수형태의 array)) 이다.
range(2,5)로 인덱스상 2,3,4에 해당하는 원소[5,7,9]를 지우는 명령어이다.
np.insert의 문법은 np.insert(박히는 쪽의 어레이, 박히는 위치 인덱스, 박아넣을 어레이)
인덱스상 2부터 4까지 지웠으니까 2에 넣으면 지운 데이터부터 들어간다.
# 각 코드의 출력 결과
A : [1 3 5 7 9 10]
B : [-5 -7 -9]
C : [1 3 10]
D : [1 3 -5 -7 -9 10]
