In [2]:
%matplotlib inline
from matplotlib import pyplot as plt
import seaborn as sns

In [3]:
import antipackage
from github.ellisonbg.misc import vizarray as va


Downloading:  https://raw.githubusercontent.com/ellisonbg/misc/master/vizarray.py
Using existing version:  github.ellisonbg.misc.vizarray

In [4]:
import numpy as np

In [4]:
data = [0,2,4,6]
a = np.array(data)

In [5]:
type(a)


Out[5]:
numpy.ndarray

In [6]:
a


Out[6]:
array([0, 2, 4, 6])

In [7]:
va.vizarray(a)


Out[7]:

In [8]:
a.shape


Out[8]:
(4,)

In [9]:
a.ndim


Out[9]:
1

In [10]:
a.size


Out[10]:
4

In [11]:
a.nbytes


Out[11]:
32

In [12]:
a.dtype


Out[12]:
dtype('int64')

In [13]:
data = [[0.0,2.0,4.0,6.0],[1.0,3.0,5.0,7.0]]
b = np.array(data)

In [14]:
b


Out[14]:
array([[ 0.,  2.,  4.,  6.],
       [ 1.,  3.,  5.,  7.]])

In [15]:
va.vizarray(b)


Out[15]:

In [16]:
b.shape, b.ndim, b.size, b.nbytes


Out[16]:
((2, 4), 2, 8, 64)

In [17]:
c = np.arange(0.0,10.0,1.0)
c


Out[17]:
array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9.])

In [18]:
e = np.linspace(0.,5.,11)
e


Out[18]:
array([ 0. ,  0.5,  1. ,  1.5,  2. ,  2.5,  3. ,  3.5,  4. ,  4.5,  5. ])

In [19]:
np.empty((4,4))


Out[19]:
array([[  6.89943696e-310,   3.46367606e-316,   2.00471602e-316,
          2.00497807e-316],
       [  2.00498756e-316,   2.00499467e-316,   2.00470298e-316,
          2.00489389e-316],
       [  2.00481681e-316,   2.00480140e-316,   2.00482867e-316,
          2.00464843e-316],
       [  2.00470416e-316,   2.00478124e-316,   2.00491049e-316,
          2.00466978e-316]])

In [20]:
np.zeros((3,3))


Out[20]:
array([[ 0.,  0.,  0.],
       [ 0.,  0.,  0.],
       [ 0.,  0.,  0.]])

In [21]:
np.ones((3,3))


Out[21]:
array([[ 1.,  1.,  1.],
       [ 1.,  1.,  1.],
       [ 1.,  1.,  1.]])

In [24]:
a = np.array([0,1,2,3])

In [25]:
a, a.dtype


Out[25]:
(array([0, 1, 2, 3]), dtype('int64'))

In [26]:
b = np.zeros((2,2), dtype=np.complex64)
b


Out[26]:
array([[ 0.+0.j,  0.+0.j],
       [ 0.+0.j,  0.+0.j]], dtype=complex64)

In [27]:
c = np.arange(0,10,2,dtype=np.float)
c


Out[27]:
array([ 0.,  2.,  4.,  6.,  8.])

In [29]:
d = c.astype(dtype=np.int)
d


Out[29]:
array([0, 2, 4, 6, 8])

In [30]:
np.float*?

In [31]:
a = np.empty((3,3))
a.fill(0.1)
a


Out[31]:
array([[ 0.1,  0.1,  0.1],
       [ 0.1,  0.1,  0.1],
       [ 0.1,  0.1,  0.1]])

In [33]:
b = np.ones((3,3))
b


Out[33]:
array([[ 1.,  1.,  1.],
       [ 1.,  1.,  1.],
       [ 1.,  1.,  1.]])

In [34]:
a + b


Out[34]:
array([[ 1.1,  1.1,  1.1],
       [ 1.1,  1.1,  1.1],
       [ 1.1,  1.1,  1.1]])

In [35]:
b/a


Out[35]:
array([[ 10.,  10.,  10.],
       [ 10.,  10.,  10.],
       [ 10.,  10.,  10.]])

In [36]:
a**2


Out[36]:
array([[ 0.01,  0.01,  0.01],
       [ 0.01,  0.01,  0.01],
       [ 0.01,  0.01,  0.01]])

In [37]:
np.pi*b


Out[37]:
array([[ 3.14159265,  3.14159265,  3.14159265],
       [ 3.14159265,  3.14159265,  3.14159265],
       [ 3.14159265,  3.14159265,  3.14159265]])

In [41]:
a = np.random.rand(10,10)

In [42]:
va.enable()

In [43]:
a


Out[43]:

In [44]:
a[0,0]


Out[44]:
0.56871711346503506

In [45]:
a[-1,-1] == a[9,9]


Out[45]:
True

In [47]:
a[:,0]


Out[47]:

In [48]:
a[-1,:]


Out[48]:

In [49]:
a[0:2,0:2]


Out[49]:

In [50]:
a[0:5,0:5] = 1.0

In [51]:
a


Out[51]:

In [52]:
va.disable()

In [53]:
ages = np.array([23,56,67,89,23,56,27,12,8,72])
genders = np.array(['m','m','f','f','m','f','m','m','m','f'])

In [54]:
ages > 30


Out[54]:
array([False,  True,  True,  True, False,  True, False, False, False,  True], dtype=bool)

In [57]:
genders == 'm'


Out[57]:
array([ True,  True, False, False,  True, False,  True,  True,  True, False], dtype=bool)

In [58]:
(ages > 10) & (ages < 50)


Out[58]:
array([ True, False, False, False,  True, False,  True,  True, False, False], dtype=bool)

In [59]:
mask = (genders == 'f')
ages[mask]


Out[59]:
array([67, 89, 56, 72])

In [60]:
ages[ages>30]


Out[60]:
array([56, 67, 89, 56, 72])

In [61]:
va.enable()

In [62]:
a = np.random.rand(3,4)

In [63]:
a


Out[63]:

In [64]:
a.T


Out[64]:

In [65]:
a.reshape(2,6)


Out[65]:

In [66]:
a.reshape(6,2)


Out[66]:

In [67]:
a.ravel()


Out[67]:

In [68]:
va.disable()

In [69]:
va.set_block_size(5)
va.enable()

In [70]:
t = np.linspace(0.0, 4*np.pi, 100)
t


Out[70]:

In [71]:
np.sin(t)


Out[71]:

In [72]:
np.exp(np.sqrt(t))


Out[72]:

In [73]:
va.disable
va.set_block_size(30)

In [78]:
plt.plot(t, np.exp(-0.1*t)*np.sin(t))


Out[78]:
[<matplotlib.lines.Line2D at 0x7f01b9283c10>]

In [ ]:
ages = np.array([23,56,67,89,23,56,27,12,8,72])
genders = np.array(['m','m','f','f','m','f','m','m','m','f'])

In [79]:
ages.min(), ages.max()


Out[79]:
(8, 89)

In [80]:
ages.mean()


Out[80]:
43.299999999999997

In [81]:
ages.var(), ages.std()


Out[81]:
(711.21000000000004, 26.668520768876554)

In [82]:
np.bincount(ages)


Out[82]:

In [83]:
va.disable()

In [84]:
np.bincount(ages)


Out[84]:
array([0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
       0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])

In [85]:
ages.cumsum()


Out[85]:
array([ 23,  79, 146, 235, 258, 314, 341, 353, 361, 433])

In [86]:
ages.cumprod()


Out[86]:
array([              23,             1288,            86296,
                7680344,        176647912,       9892283072,
           267091642944,    3205099715328,   25640797722624,
       1846137436028928])

In [87]:
a = np.random.randint(0,10,(3,4))
a


Out[87]:
array([[8, 0, 2, 7],
       [9, 9, 2, 7],
       [7, 0, 9, 6]])

In [88]:
a.sum(axis=0)


Out[88]:
array([24,  9, 13, 20])

In [89]:
a.sum(axis=1)


Out[89]:
array([17, 27, 22])

In [92]:
np.unique(genders)


Out[92]:
array(['f', 'm'], 
      dtype='|S1')

In [93]:
np.unique(genders, return_counts=True)


Out[93]:
(array(['f', 'm'], 
       dtype='|S1'), array([4, 6]))

In [94]:
np.where(ages>30, 0, 1)


Out[94]:
array([1, 0, 0, 0, 1, 0, 1, 1, 1, 0])

In [5]:
np.where(ages>30, 0)


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-5-0a99f5d557d9> in <module>()
----> 1 np.where(ages>30, 0)

NameError: name 'ages' is not defined

In [6]:
a = np.random.rand(10)
a


Out[6]:
array([ 0.2795963 ,  0.67573384,  0.13327542,  0.29418529,  0.11739243,
        0.3804104 ,  0.81254677,  0.06147977,  0.400425  ,  0.48897354])

In [7]:
np.save('array1', a)

In [8]:
ls


array1.npy  Day05.ipynb  Numpy.ipynb  Untitled.ipynb

In [10]:
%pycat array1.npy

In [11]:
a_copy = np.load('array1.npy')

In [12]:
a_copy


Out[12]:
array([ 0.2795963 ,  0.67573384,  0.13327542,  0.29418529,  0.11739243,
        0.3804104 ,  0.81254677,  0.06147977,  0.400425  ,  0.48897354])

In [13]:
b = np.random.randint(0,10,(5,3))

In [14]:
b


Out[14]:
array([[2, 3, 4],
       [4, 3, 6],
       [9, 2, 8],
       [9, 0, 2],
       [4, 2, 7]])

In [15]:
np.savetxt('array2.txt', b)

In [16]:
ls


array1.npy  array2.txt  Day05.ipynb  Numpy.ipynb  Untitled.ipynb

In [17]:
%pycat array2.txt

In [18]:
np.loadtxt('array2.txt')


Out[18]:
array([[ 2.,  3.,  4.],
       [ 4.,  3.,  6.],
       [ 9.,  2.,  8.],
       [ 9.,  0.,  2.],
       [ 4.,  2.,  7.]])

In [19]:
np.savez('arrays.npz', a=a, b=b)

In [20]:
a_and_b = np.load('arrays.npz')

In [21]:
a_and_b['a']


Out[21]:
array([ 0.2795963 ,  0.67573384,  0.13327542,  0.29418529,  0.11739243,
        0.3804104 ,  0.81254677,  0.06147977,  0.400425  ,  0.48897354])

In [22]:
a_and_b['b']


Out[22]:
array([[2, 3, 4],
       [4, 3, 6],
       [9, 2, 8],
       [9, 0, 2],
       [4, 2, 7]])

In [23]:
a_and_b


Out[23]:
<numpy.lib.npyio.NpzFile at 0x7f68d3ae2310>

In [24]:
a = np.random.rand(5,5)
b = np.random.rand(5,5)

In [25]:
a*b


Out[25]:
array([[ 0.3970959 ,  0.25972457,  0.1458261 ,  0.14150735,  0.32512089],
       [ 0.2879721 ,  0.56744309,  0.24809489,  0.3643805 ,  0.35687615],
       [ 0.23710778,  0.16154288,  0.17058253,  0.09147397,  0.00306126],
       [ 0.42509631,  0.08561925,  0.71541862,  0.03712759,  0.38830917],
       [ 0.02422912,  0.33202479,  0.24771973,  0.0471565 ,  0.1182561 ]])

In [26]:
np.dot(a,b)


Out[26]:
array([[ 1.12758441,  1.55202348,  1.83523282,  0.56756526,  1.023231  ],
       [ 1.54935721,  1.90640913,  2.20764631,  0.81418192,  1.48452247],
       [ 1.10339677,  1.03559796,  1.10103879,  0.48062497,  0.89885022],
       [ 1.46556278,  1.29651288,  1.39399332,  0.49910592,  0.79275056],
       [ 1.47992239,  1.79987036,  2.19570094,  0.78515684,  1.42062943]])

In [27]:
m1 = np.matrix(a)
m2 = np.matrix(b)

In [28]:
m1*m2


Out[28]:
matrix([[ 1.12758441,  1.55202348,  1.83523282,  0.56756526,  1.023231  ],
        [ 1.54935721,  1.90640913,  2.20764631,  0.81418192,  1.48452247],
        [ 1.10339677,  1.03559796,  1.10103879,  0.48062497,  0.89885022],
        [ 1.46556278,  1.29651288,  1.39399332,  0.49910592,  0.79275056],
        [ 1.47992239,  1.79987036,  2.19570094,  0.78515684,  1.42062943]])

In [29]:
np.linalg.det(a)


Out[29]:
-0.023941848139078521

In [30]:
np.linalg.inv(a)


Out[30]:
array([[-1.98738226,  5.91562058, -3.41552364,  1.34636744, -3.07754839],
       [-5.61693517,  8.57497079, -6.28696526,  2.09731488, -1.71541834],
       [ 0.55837959, -2.82684472,  1.91428007,  0.43787094,  1.31430177],
       [ 5.16399649, -7.5773846 ,  7.29377899, -2.81829055,  1.78465643],
       [ 1.77378196, -2.97813624,  0.55147074, -0.37522779,  1.79299001]])

In [31]:
np.linalg.eigvals(a)


Out[31]:
array([ 2.51558081+0.j        , -0.37174786+0.j        ,
        0.28543948+0.27487332j,  0.28543948-0.27487332j,  0.16303671+0.j        ])

In [32]:
c = np.random.rand(2000,2000)

In [33]:
%timeit -n1 -r1 evs = np.linalg.eigvals(c)


1 loops, best of 1: 37.1 s per loop

In [34]:
plt.hist(np.random.random(250))
plt.title('Uniform Random Distribution $[0,1]$')
plt.xlabel('value')
plt.ylabel('count')


Out[34]:
<matplotlib.text.Text at 0x7f68d1c1f050>

In [35]:
plt.hist(np.random.randn(250))
plt.title('Standard Noral Distribution')
plt.xlabel('value')
plt.ylabel('count')


Out[35]:
<matplotlib.text.Text at 0x7f68d4312b50>

In [36]:
a = np.arange(0,10)
np.random.shuffle(a)
a


Out[36]:
array([3, 7, 1, 5, 8, 9, 6, 2, 4, 0])

In [37]:
a = np.arange(0,10)
print(np.random.permutation(a))
print(a)


[5 6 3 9 0 4 2 1 8 7]
[0 1 2 3 4 5 6 7 8 9]

In [ ]:
np.random.choice(['m','f'], 20, p=[0.25,0.])