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

In [5]:
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 [6]:
import numpy as np

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


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

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


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

In [9]:
a+b


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

In [10]:
b/a


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

In [11]:
a**2


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

In [12]:
np.pi*b


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

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

In [14]:
va.enable()

In [15]:
a


Out[15]:

In [16]:
a[0,0]


Out[16]:
0.27120754215927823

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


Out[17]:
True

In [18]:
a[:,0]


Out[18]:

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


Out[19]:

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


Out[20]:

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

In [22]:
a


Out[22]:

In [23]:
va.disable()

In [24]:
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 [25]:
ages > 30


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

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


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

In [27]:
mask = (genders == "f")
ages[mask]


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

In [28]:
ages[ages>30]


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

In [29]:
va.enable()

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

In [31]:
a


Out[31]:

In [32]:
a.T


Out[32]:

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


Out[33]:

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


Out[34]:

In [35]:
a.ravel()


Out[35]:

In [36]:
va.disable()

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

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


Out[38]:

In [39]:
np.sin(t)


Out[39]:

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


Out[40]:

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

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


Out[42]:
[<matplotlib.lines.Line2D at 0x7f3dab437110>]

In [43]:
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 [44]:
ages.min(), ages.max()


Out[44]:
(8, 89)

In [45]:
ages.mean()


Out[45]:
43.299999999999997

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


Out[46]:
(711.21000000000004, 26.668520768876554)

In [47]:
np.bincount(ages)


Out[47]:
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 [48]:
ages.cumsum()


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

In [49]:
ages.cumprod()


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

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


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

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


Out[51]:
array([23, 11, 12, 13])

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


Out[52]:
array([31,  8, 20])

In [53]:
np.unique(genders)


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

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


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

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


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

In [56]:
np.where(ages<30, 0, ages)


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

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


Out[57]:
array([ 0.18830122,  0.83845397,  0.81110033,  0.47910764,  0.53906557,
        0.65843344,  0.86157557,  0.16586074,  0.92789509,  0.32601429])

In [58]:
np.save("array1", a)

In [59]:
ls


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

In [60]:
%pycat array1.npy

In [61]:
a_copy = np.load("array1.npy")

In [62]:
a_copy


Out[62]:
array([ 0.18830122,  0.83845397,  0.81110033,  0.47910764,  0.53906557,
        0.65843344,  0.86157557,  0.16586074,  0.92789509,  0.32601429])

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


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

In [64]:
np.savetxt("array2.txt", b)

In [65]:
ls


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

In [66]:
%pycat array2.txt

In [67]:
np.loadtxt("array2.txt")


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

In [68]:
np.savez("arrays.npz", a=a, b=b)

In [69]:
a_and_b = np.load("arrays.npz")

In [70]:
a_and_b["a"]


Out[70]:
array([ 0.18830122,  0.83845397,  0.81110033,  0.47910764,  0.53906557,
        0.65843344,  0.86157557,  0.16586074,  0.92789509,  0.32601429])

In [71]:
a_and_b["b"]


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

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

In [73]:
a*b


Out[73]:
array([[ 0.01136743,  0.15698163,  0.52870858,  0.8899581 ,  0.1370473 ],
       [ 0.37954382,  0.30941556,  0.17197787,  0.44698928,  0.13509894],
       [ 0.21000253,  0.22872409,  0.38693399,  0.5640231 ,  0.00657149],
       [ 0.10725132,  0.40439514,  0.20743501,  0.09689429,  0.0076696 ],
       [ 0.74808798,  0.04407103,  0.32688194,  0.48602074,  0.12518149]])

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


Out[74]:
array([[ 1.04211097,  2.01031903,  2.16461426,  1.96228326,  0.57390927],
       [ 1.30087571,  1.74397962,  1.89791141,  1.77485553,  0.68247609],
       [ 0.727867  ,  1.3503134 ,  1.39182029,  1.49457338,  0.29619683],
       [ 1.2977354 ,  1.6613309 ,  1.77800595,  1.77124449,  0.69617672],
       [ 0.62476232,  1.90453303,  1.93090159,  1.7455144 ,  0.45203689]])

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

In [77]:
m1*m2


Out[77]:
matrix([[ 1.04211097,  2.01031903,  2.16461426,  1.96228326,  0.57390927],
        [ 1.30087571,  1.74397962,  1.89791141,  1.77485553,  0.68247609],
        [ 0.727867  ,  1.3503134 ,  1.39182029,  1.49457338,  0.29619683],
        [ 1.2977354 ,  1.6613309 ,  1.77800595,  1.77124449,  0.69617672],
        [ 0.62476232,  1.90453303,  1.93090159,  1.7455144 ,  0.45203689]])

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


Out[78]:
0.027541253108440668

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


Out[80]:
array([[ 0.11836647, -3.8677372 , -0.54499402,  3.51266091,  1.2214507 ],
       [-2.26695293,  2.8804356 ,  1.75295624, -1.48915052,  0.07985372],
       [ 2.6210383 , -4.15157723,  0.63421879,  2.77555757, -1.52341498],
       [-1.39613586,  5.51572396,  0.58297095, -4.83465679,  0.53226709],
       [ 1.6531463 , -0.79215028, -1.82217837,  1.35068052, -0.58282749]])

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


Out[81]:
array([ 2.64444128+0.j        ,  0.21777936+0.23387031j,
        0.21777936-0.23387031j, -0.40151018+0.j        , -0.25399719+0.j        ])

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

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


1 loops, best of 1: 29.5 s per loop

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


Out[85]:
<matplotlib.text.Text at 0x7f3daab12b50>

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


Out[86]:
<matplotlib.text.Text at 0x7f3da8b10e50>

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


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

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


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

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