In [1]:
import numpy as np
import timeit
In [29]:
n = 1000000
a = [0.1 for i in range(n)]
b = [0.1 for i in range(n)]
def dot_python(a,b):
c = 0
for i in range(n):
c += a[i]*b[i]
return c
Now let see how long does it take:
In [32]:
number = 100
time_dot_python = timeit.timeit('dot_python(a,b)', "from __main__ import dot_python,a,b,n", number=number)
print(time_dot_python)
In [ ]:
np.array([1,2,3,4])
1D 2D and more
In [ ]:
np.array([[1,2],[3,4]])
shape
In [ ]:
a = np.array([1,2,3,4])
print(a.shape)
a = np.array([[1,2,1,1],[3,4,1,1],[5,6,1,1], [5,6,1,1]])
print(a.shape)
print(a.shape[0])
Indexing and slicing, : and ::, copy
In [ ]:
print(a[1])
print(a[1,2])
print(a[:,1])
print(a[1,:])
a[:,1] = 0
print(a)
print(a[1:3,:])
a[::2,::2]=-1
print(a)
b = a.copy()
print(b)
b[:,:]=0
print(a)
flatten, ravel, reshape
In [ ]:
a.flatten()
a.ravel()
In [ ]:
a = np.array(range(24))
print(a)
a = a.reshape((3,4,2))
print(a)
np.newaxis
In [ ]:
a[:,:,:, np.newaxis].shape
zeros, ones, zeros_like, ones_like
In [ ]:
print(np.zeros((3,3)))
print(np.ones((3,3)))
print(np.zeros_like(a))
print(np.ones_like(a))
In [ ]:
a = np.ones(10)
b = np.ones(10)
In [ ]:
a
In [ ]:
a + b
In [ ]:
a * b
In [ ]:
3.0 * a
In [29]:
t = np.float128
a = np.ones(n, dtype=t)*0.1
b = np.ones(n, dtype=t)*0.1
time_dot_np = timeit.timeit('dot(a,b)',
"from __main__ import a,b,n; from numpy import dot",
number=number)
print(time_dot_np)
16 0.6729173711501062 32 0.14058489305898547 64 0.15339889819733799 128 0.2075950598809868
In [36]:
time_dot_python/time_dot_np
Out[36]:
In [ ]:
a = np.ones((100,100))
b = np.ones((100,100))
a * b
In [6]:
a.dot(b)
Out[6]:
In [9]:
a = np.arange(0,1,0.1)
print(a)
In [10]:
a>0.5
Out[10]:
In [11]:
a[a>0.5]
Out[11]:
In [15]:
np.arange(0,0.3,0.1, dtype=np.float16)
Out[15]:
In [17]:
np.arange(0,0.5,0.1, dtype=np.float32)
Out[17]:
In [19]:
np.arange(0,1,0.1, dtype=np.float64)
Out[19]:
In [20]:
np.arange(0,1,0.1, dtype=np.float128)
Out[20]:
In [ ]:
In [30]:
a = np.array([0.0, 1.0, 0.0])
b = np.array([0.0, 0.0, 1.0])
In [32]:
c = a/b
In [33]:
c * 0
Out[33]:
In [34]:
print(c)
print(1/c)
In [35]:
np.inf>3
Out[35]:
In [36]:
np.random.random((10,10))
Out[36]: