728x90
In [2]:
import numpy as np
Operation
In [4]:
test_a = np.array([[1,2,3], [4,5,6]], float)
In [6]:
test_a + test_a #matrix + matrix
Out[6]:
In [8]:
test_a - test_a #matrix - matrix
Out[8]:
In [10]:
test_a * test_a #element 곱 연산
Out[10]:
In [13]:
matrix_a = np.arange(1, 13).reshape(3, 4)
matrix_a * matrix_a
Out[13]:
Dot product
In [15]:
test_a = np.arange(1, 7).reshape(2, 3)
test_b = np.arange(7, 13).reshape(3, 2)
In [17]:
test_a.dot(test_b)
Out[17]:
In [19]:
test_a = np.arange(1, 7).reshape(2, 3)
test_a
Out[19]:
In [21]:
test_a.transpose() #전치행렬
Out[21]:
In [23]:
test_a.T
Out[23]:
In [25]:
test_a.T.dot(test_a)
Out[25]:
Broadingcasting
broadingcasting은 간단히 말해서 분배법칙이 된다는 말이다.
In [27]:
test_matrix = np.array([[1,2,3], [4,5,6]], float)
scalar = 3
In [29]:
test_matrix + scalar #matrix + Scalar
Out[29]:
In [31]:
test_matrix - scalar #matrix - Scalar
Out[31]:
In [33]:
test_matrix * 5 #matrix * Scalar
Out[33]:
In [35]:
test_matrix / 5 #matrix / Scalar
Out[35]:
In [37]:
test_matrix // 0.2 #matrix // Scalar
Out[37]:
In [39]:
test_matrix ** 2 #matrix ** Scalar
Out[39]:
다음과 같은 경우에는 각 행별로 test_vector가 더해지는 것이다.
In [43]:
test_matrix = np.arange(1, 13).reshape(4, 3)
test_vector = np.arange(10 ,40, 10)
test_matrix + test_vector
Out[43]:
Performance
%timeit을 사용하여 속도가 얼마나 나오는지 확인할 수 있다.
In [48]:
def scalar_vector_product(scalar, vector):
result = []
for value in vector:
result.append(scalar * value)
return result
iternation_max = 10000000
vector = list(range(iternation_max))
scalar = 2
%timeit scalar_vector_product(scalar, vector) #for loop을 이용한 성능
In [50]:
%timeit [scalar * value for value in range(iternation_max)] # list comprehention을 이용한 성능
In [51]:
%timeit np.arange(iternation_max) * scalar #numpy를 이용한 성능
위와 같은 결과를 통해서 numpy를 사용한 속도가 빠르다는 것을 확인할 수 있다. 하지만 concatenate와 같이 matrix끼리 결합을 할때에는 메모리를 할당해야하기때문에 numpy보다는 List를 사용하는 것이 빠르다고 한다.
728x90
'Numpy' 카테고리의 다른 글
[Numpy] Fancy index (0) | 2021.07.16 |
---|---|
[Numpy] all&any, comparison, where, argmax&argmin (0) | 2021.07.16 |
[Numpy] Operation_function, Concatenate (0) | 2021.07.16 |
[Numpy] Arange, ones, zeros, empty, eye, identity, digonal, random (0) | 2021.07.16 |
[Numpy] Indexing, Slicing (0) | 2021.07.16 |