벡터화 연산
- 명시적으로 반복문을 사용하지 않고도 배열의 모든 원소애 대해 반복연산을 할 수 있습니다.
data = [0,1,2,3,4,5,6,7,8,9]
answer = [2 * d for d in data]
answer
x = np.array(data)
x
2 * x
list_samp = [_ for _ in range(3)]print(list_samp*5)
a = np.array([1,2,3])
b = np.array([10,20,30])
2*a+b
a == 2
b > 10
(a == 2) & (b > 10)
x = np.arange(1, 10001)
y = np.arange(10001, 20001)
%%time
- 해당 매직메서드를 통해 파이썬에서 실행시간을 구할 수 있다.
- 아래 예시를 통해 벡터화 연산과 반복문을 사용한 연산의 시간 차이를 볼 수 있다.
%%time
z = x+y
%%time
z = np.zeros_like(x)
for i in range(10000):
z[i] = x[i] + y[i]
a = np.array([1,2,3,4])
b = np.array([4,2,2,4])
print(a == b)
print(a >= b)
a = np.array([1,2,3,4])
b = np.array([4,2,2,4])
c = np.array([1,2,3,4])
print(np.all(a == b))
print(np.all(a == c))
스칼라와 벡터/행렬의 곱셈
x = np.arange(10)x
100 * x
x = np.arange(12).reshape(3,4)
x
100 * x
브로드캐스팅
- 행열의 칸이 맞지 않더라도 모든 차원에 대해 한쪾이 1이거나 서로 같으면 자동으로 맞추어 주는 파이썬 array의 특징
# 배열간의 곱
a = np.array([1.0, 2.0, 3.0])
b = np.array([2.0, 2.0, 2.0])
a * b
# 스칼라
a = np.array([1.0, 2.0, 3.0])
b = 2.0
a * b
차원 축소 연산
넘파이는 다음과 같은 차원 축소 연산 명령 혹은 메서드를 지원합니다.
- 최대/최소: min, max, argimin, argmax
- 통계: sum, mean, median, std, var
- 불리언: all, any
sum
- 합산 결과를 반환합니다.
- numpy.sum() 과 ndarray()의 메서드는 동일합니다.
x = np.array([1,2,3,4])
x
np.sum(x)
x.sum()
x = np.arange(12).reshape(3,-1)
x
x.sum(axis=0) # axis=0은 행 간의 연산 결과를 구한다.
x.sum(axis=1) # axis=1은 열 간의 연산 결과를 구한다.
min
해당 배열의 제일 작은 값의 결과를 반환합니다.
x = np.arange(20).reshape(2,5,-1)
x
x.min()
np.min(x)
x.min(axis=0)
np.min(x, axis=1)
x.min(axis=2)
argmin
해당 배열의 제일 작은 값의 인덱스를 반환합니다.
x = np.arange(20).reshape(2,5,-1)
x
x.argmin()
np.argmin(x)
x.argmin(axis=0)
np.argmin(x, axis=1)
x.argmin(axis=2)
max
해당 배열의 제일 큰 값의 결과를 반환합니다.
x = np.arange(20).reshape(2,5,-1)
x
x.max()
np.max(x)
x.max(axis=0)
np.max(x, axis=1)
x.max(axis=2)
argmax
해당 배열의 제일 큰 값의 인덱스를 반환합니다.
x = np.arange(20).reshape(2,5,-1)
x
x.argmax()
np.argmax(x)
x.argmax(axis=0)
np.argmax(x, axis=1)
x.argmax(axis=2)
mean
평균을 구합니다.
x = np.array([1,2,3,1])
x.mean()
median
중앙값을 구합니다.
np.median(x)
np.all
배열 요소가 모두 True일 때 True를 반환합니다.
np.any
배열 요소가 하나라도 True면 True를 반환합니다.
np.all([True, True, False])
np.any([True, True, False])
a = np.array([1,2,3,2])
b = np.array([2,2,3,2])
c = np.array([6,4,4,5])
((a<=b) & (b<=c)).all()
a = np.zeros((100,100), dtype=np.int64)a
np.any(a != 0)
np.all(a == a)