In [2]:
import numpy as np
In [3]:
L = [1,2,3]
print(L)
A = np.array([1,2,3])
print(A)
In [4]:
for e in L:
print(e)
print('numpy array goes below:')
for e in A:
print(e)
In [5]:
L.append(4)
In [6]:
L
Out[6]:
In [7]:
A.append(4)
In [8]:
L = L + [5]
In [9]:
L
Out[9]:
In [10]:
A = A + [4,5]
In [11]:
# Vector Addition
# python list
L2 = []
for e in L:
L2.append(e+e)
print(L2)
# numpy array
A2 = A + A
print(A2)
In [12]:
print('L*2 = ', L*2)
# Scalar Multiplication
L3 = []
# python list
for e in L:
L3.append(e*3)
print(L3)
# numpy array
A3 = A*3
print(A3)
In [15]:
A**2
Out[15]:
In [16]:
np.sqrt(A)
Out[16]:
In [17]:
np.log(A)
Out[17]:
In [18]:
np.exp(A)
Out[18]:
In [19]:
# DOT Product
In [20]:
a = np.array([1,2])
b = np.array([3,4])
In [21]:
dot = 0
for e,f in zip(a,b):
dot += e*f
In [22]:
dot
Out[22]:
In [23]:
np.dot(a,b)
print(dot)
In [24]:
a*b
Out[24]:
In [26]:
np.sum(a*b)
Out[26]:
In [29]:
(a*b).sum()
Out[29]:
In [30]:
a.dot(b)
Out[30]:
In [33]:
amag = np.sqrt(np.sum(np.square(a)))
In [34]:
amag
Out[34]:
In [35]:
amag = np.linalg.norm(a)
print(amag)
In [37]:
cosangle = a.dot(b) / (np.linalg.norm(a) * np.linalg.norm(b))
print(cosangle)
In [39]:
angle = np.arccos(cosangle)
print(angle)
In [40]:
######### Speed comparision:
In [47]:
import numpy as np
from datetime import datetime
a = np.random.randn(100)
b = np.random.randn(100)
T = 100000
#custom dot product using python list
def slow_dot_product(a,b):
result = 0
for e,f in zip(a,b):
result += e*f
return result
t0 = datetime.now()
for t in range(T):
slow_dot_product(a,b)
dt1 = datetime.now() - t0
t0 = datetime.now()
for t in range(T):
a.dot(b)
dt2 = datetime.now() - t0
print('speedfactor: dt1/dt2 = ', dt1.total_seconds() / dt2.total_seconds())
In [48]:
# Matrix and nd-arrays
M = np.array([[1,2],[3,4]])
L = [[1,2],[3,4]]
In [49]:
M
Out[49]:
In [50]:
L
Out[50]:
In [51]:
M[0][0]
Out[51]:
In [52]:
M[0,0]
Out[52]:
In [53]:
L[0][0]
Out[53]:
In [54]:
L[0,0]
In [56]:
M2 = np.matrix([[1,2],[3,4]])
In [57]:
M2
Out[57]:
In [58]:
M2[0][0]
Out[58]:
In [59]:
M2[0,0]
Out[59]:
In [60]:
M2[0]
Out[60]:
In [65]:
print(M)
print('\ntranspose:')
print(M.T)
In [66]:
print(M2)
print('\ntranspose:')
print(M2.T)
In [77]:
print(M[0])
print('\ntranspose:')
print(len([M[0]]))
print('\ntranspose:')
print(np.transpose([M[0]]).shape)
In [78]:
np.zeros(3)
Out[78]:
In [79]:
np.zeros((3,7))
Out[79]:
In [80]:
np.ones(10)
Out[80]:
In [81]:
np.ones(10,10)
In [82]:
np.ones((10,10))
Out[82]:
In [83]:
np.random.random((10,10))
Out[83]:
In [85]:
np.random.random((10,10))
Out[85]:
In [89]:
G = np.random.randn(10,10)
print(G)
print(G.mean())
print(G.var())
In [93]:
A = np.random.randn(3,3)
Ainv = np.linalg.inv(A)
print(A)
print('--------------')
print(Ainv)
print('--------------')
print(A.dot(Ainv))
print('--------------')
print(Ainv.dot(A))
print('--------------')
print(np.diag(A))
print('--------------')
print(np.diag([1,2,3]))
In [105]:
a = np.random.randn(3)
In [106]:
a
Out[106]:
In [107]:
b = np.random.randn(3)
b
Out[107]:
In [108]:
np.outer(a,b)
Out[108]:
In [109]:
np.inner(a,b)
Out[109]:
In [110]:
a.dot(b)
Out[110]:
In [111]:
np.dot(a,b)
Out[111]:
In [112]:
np.outer(b,a)
Out[112]:
In [113]:
np.outer(a,b)
Out[113]:
In [114]:
np.trace(np.outer(a,b))
Out[114]:
In [115]:
np.diag(np.outer(a,b)).sum()
Out[115]:
In [119]:
# """
# x1 + x2 = 2200
# 1.5 * x1 + 4.0 * x2 = 5050
# """
A = np.array([[1,1], [1.5, 4]])
b = np.array([2200, 5050])
m_sol = np.linalg.solve(A,b)
print(m_sol)
In [121]:
m_sol = np.linalg.inv(A).dot(b)
print(m_sol)
In [ ]: