In [2]:
%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

arr = np.arange(10)

In [4]:
arr**2


Out[4]:
array([ 0,  1,  4,  9, 16, 25, 36, 49, 64, 81])

In [5]:
arr[5:8]


Out[5]:
array([5, 6, 7])

In [6]:
arr[5:8] = 12

In [7]:
arr


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

In [8]:
arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

In [10]:
arr2d[2,0]


Out[10]:
7

In [19]:
names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])

In [21]:
data = np.random.randn(7, 4)
print data
data[names == 'Bob'] = 0
print data


[[-2.23646038 -2.02401114  0.16492453 -0.62095338]
 [ 2.24554662  1.915345   -1.40304396  0.65041308]
 [ 0.0298092  -0.5287524  -1.51751606 -1.28582984]
 [-0.29866437  0.78302032 -0.69468364  0.1452217 ]
 [ 0.28560507 -0.62355834 -1.83768454  0.5128036 ]
 [ 1.4109274   0.57831034  0.35147071 -0.4190572 ]
 [ 0.04061695  1.94958308  1.00748703 -0.26016986]]
[[ 0.          0.          0.          0.        ]
 [ 2.24554662  1.915345   -1.40304396  0.65041308]
 [ 0.0298092  -0.5287524  -1.51751606 -1.28582984]
 [ 0.          0.          0.          0.        ]
 [ 0.28560507 -0.62355834 -1.83768454  0.5128036 ]
 [ 1.4109274   0.57831034  0.35147071 -0.4190572 ]
 [ 0.04061695  1.94958308  1.00748703 -0.26016986]]

In [16]:



Out[16]:
array([[-0.09350093, -0.50701636,  0.42610357, -0.42817503],
       [ 0.4373933 , -0.37367311, -0.05667836, -0.49484897]])

In [17]:
names == 'Bob'


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

In [4]:
points = np.arange(-5, 5, 0.01)
xs, ys = np.meshgrid(points, points)

In [5]:
ys


Out[5]:
array([[-5.  , -5.  , -5.  , ..., -5.  , -5.  , -5.  ],
       [-4.99, -4.99, -4.99, ..., -4.99, -4.99, -4.99],
       [-4.98, -4.98, -4.98, ..., -4.98, -4.98, -4.98],
       ..., 
       [ 4.97,  4.97,  4.97, ...,  4.97,  4.97,  4.97],
       [ 4.98,  4.98,  4.98, ...,  4.98,  4.98,  4.98],
       [ 4.99,  4.99,  4.99, ...,  4.99,  4.99,  4.99]])

In [6]:
xs


Out[6]:
array([[-5.  , -4.99, -4.98, ...,  4.97,  4.98,  4.99],
       [-5.  , -4.99, -4.98, ...,  4.97,  4.98,  4.99],
       [-5.  , -4.99, -4.98, ...,  4.97,  4.98,  4.99],
       ..., 
       [-5.  , -4.99, -4.98, ...,  4.97,  4.98,  4.99],
       [-5.  , -4.99, -4.98, ...,  4.97,  4.98,  4.99],
       [-5.  , -4.99, -4.98, ...,  4.97,  4.98,  4.99]])

In [7]:
z = np.sqrt(xs ** 2 + ys ** 2)

In [8]:
plt.imshow(z, cmap=plt.cm.gray); plt.colorbar()


Out[8]:
<matplotlib.colorbar.Colorbar at 0x7f0a891e1810>

In [9]:
nsteps = 1000
draws = np.random.randint(0, 2, size=nsteps)

In [14]:
print draws


[0 0 1 1 0 0 0 1 1 1 0 0 0 1 1 0 0 1 1 1 1 1 1 0 1 1 0 0 0 1 1 0 1 0 1 1 0
 1 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 1 0 1 0 0 1 1 0 0 1 1 0 1 1 1 0 0 1 0
 1 0 0 0 1 1 0 1 0 1 0 1 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0
 1 1 1 0 1 0 0 1 0 1 1 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 1 1 1 1 0 0 0 0 1
 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 1 1 1 0 0 1 1 0 1 0
 1 1 1 1 1 0 1 0 1 0 1 0 0 1 1 0 0 1 0 1 0 1 0 1 1 1 1 0 0 1 0 0 0 1 1 0 1
 1 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1
 1 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 1 1 0 1 0 1 1 0
 0 0 1 1 1 0 0 0 1 0 0 0 1 1 0 0 1 0 1 1 0 1 1 0 0 1 0 1 0 0 0 1 0 1 0 1 1
 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 1 0 0 1 1 0 0 1 0 0 1 0 1 0 1 1 0 0 0 0 0
 1 0 0 1 0 0 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 0 0 1
 0 1 1 1 1 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 0 0 0
 1 1 0 0 1 1 1 1 0 0 1 1 1 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 0 0 1
 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 1 1 0 1 1 1 0 0 1 0 1 1 1 1 0
 0 1 0 1 1 0 0 0 1 1 0 0 1 1 1 0 1 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 0 1 1 1 0
 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1
 0 1 0 0 1 1 1 1 0 0 1 1 0 1 1 1 0 1 1 0 0 1 1 1 0 1 1 1 0 1 1 0 1 0 1 0 0
 0 0 1 1 1 1 1 1 0 0 1 1 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0
 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 1 1 1 1 1 0 1 1 0 1 0 1 1 0 0 1 1 0 0 1 0
 1 1 1 0 1 0 1 0 0 1 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 1 1 0 1 1
 0 1 1 0 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 1 1 1 1 0 0 0 1 0 0 0 1 0 0 1 0
 0 0 0 1 1 0 1 0 1 1 1 1 1 1 0 0 1 0 1 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 1 0 0
 0 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1 1 0 0 0 0 1 0 0 1 1 0 1 0 1 1 1 1 0 1 0 1
 0 0 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 0 1 0 0 0 0 1 0 1 1 0 0 1 0 1
 1 1 1 0 0 0 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0
 0 1 0 1 1 0 0 0 1 0 0 1 1 1 0 1 1 1 0 0 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 1 0
 1 1 1 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 1 1 1 1 0 1 1 1 0 0 1 0 0 1 1 0 0 0
 0]

In [13]:
np.random.randint(0, 20)


Out[13]:
17

In [15]:
steps = np.where(draws > 0, 1, -1)
print steps


[-1 -1  1  1 -1 -1 -1  1  1  1 -1 -1 -1  1  1 -1 -1  1  1  1  1  1  1 -1  1
  1 -1 -1 -1  1  1 -1  1 -1  1  1 -1  1  1  1 -1 -1 -1 -1 -1 -1  1  1 -1 -1
 -1  1 -1 -1  1  1 -1  1 -1 -1  1  1 -1 -1  1  1 -1  1  1  1 -1 -1  1 -1  1
 -1 -1 -1  1  1 -1  1 -1  1 -1  1  1  1 -1 -1 -1  1  1 -1  1 -1 -1 -1  1 -1
 -1 -1  1 -1  1 -1  1 -1 -1 -1 -1  1  1  1 -1  1 -1 -1  1 -1  1  1  1 -1 -1
 -1  1 -1 -1  1 -1 -1 -1 -1 -1  1 -1  1  1  1  1  1  1 -1 -1 -1 -1  1 -1  1
  1  1 -1  1 -1  1 -1  1 -1  1 -1  1 -1 -1 -1 -1 -1 -1 -1  1  1 -1  1  1 -1
  1  1  1 -1 -1  1  1 -1  1 -1  1  1  1  1  1 -1  1 -1  1 -1  1 -1 -1  1  1
 -1 -1  1 -1  1 -1  1 -1  1  1  1  1 -1 -1  1 -1 -1 -1  1  1 -1  1  1  1 -1
 -1  1 -1 -1 -1  1  1  1 -1 -1 -1 -1 -1 -1 -1 -1  1 -1 -1  1 -1  1 -1 -1  1
 -1  1 -1  1 -1 -1  1 -1  1  1 -1 -1 -1  1 -1  1 -1 -1 -1 -1 -1  1  1 -1 -1
  1  1  1 -1 -1 -1 -1  1 -1 -1 -1  1 -1  1  1 -1  1 -1  1  1 -1 -1 -1  1  1
  1 -1 -1 -1  1 -1 -1 -1  1  1 -1 -1  1 -1  1  1 -1  1  1 -1 -1  1 -1  1 -1
 -1 -1  1 -1  1 -1  1  1  1 -1 -1 -1  1 -1  1 -1 -1 -1  1 -1 -1  1 -1  1  1
 -1 -1  1  1 -1 -1  1 -1 -1  1 -1  1 -1  1  1 -1 -1 -1 -1 -1  1 -1 -1  1 -1
 -1 -1  1 -1  1 -1  1 -1  1  1 -1  1  1 -1  1  1  1  1  1  1 -1  1  1 -1  1
  1  1  1  1 -1 -1  1 -1  1  1  1  1 -1  1  1  1 -1 -1  1 -1  1 -1 -1 -1 -1
 -1 -1 -1 -1 -1  1 -1 -1  1  1 -1 -1  1 -1 -1  1 -1 -1 -1  1  1 -1 -1  1  1
  1  1 -1 -1  1  1  1 -1  1 -1 -1 -1 -1 -1  1 -1  1 -1  1 -1  1 -1  1  1  1
  1  1  1 -1 -1  1 -1  1 -1 -1 -1 -1 -1 -1 -1  1 -1 -1  1 -1  1  1 -1 -1 -1
 -1 -1 -1  1  1 -1  1  1  1 -1 -1  1 -1  1  1  1  1 -1 -1  1 -1  1  1 -1 -1
 -1  1  1 -1 -1  1  1  1 -1  1 -1 -1 -1  1  1 -1 -1  1 -1 -1  1  1  1 -1 -1
 -1  1  1  1 -1  1  1 -1  1 -1  1 -1  1 -1  1 -1  1 -1  1 -1  1  1 -1  1 -1
  1 -1 -1 -1  1 -1  1 -1 -1 -1 -1 -1 -1 -1  1  1  1 -1  1 -1 -1  1  1  1  1
 -1 -1  1  1 -1  1  1  1 -1  1  1 -1 -1  1  1  1 -1  1  1  1 -1  1  1 -1  1
 -1  1 -1 -1 -1 -1  1  1  1  1  1  1 -1 -1  1  1 -1 -1 -1  1  1 -1 -1 -1  1
  1  1 -1 -1 -1 -1 -1  1  1  1  1  1 -1 -1 -1 -1 -1 -1  1 -1 -1 -1  1  1 -1
 -1  1 -1 -1 -1  1 -1  1  1  1  1  1 -1  1  1 -1  1 -1  1  1 -1 -1  1  1 -1
 -1  1 -1  1  1  1 -1  1 -1  1 -1 -1  1  1 -1 -1  1 -1  1 -1 -1 -1 -1 -1  1
 -1 -1 -1 -1 -1  1 -1  1  1 -1  1  1 -1  1  1 -1  1  1 -1 -1 -1 -1 -1  1 -1
  1 -1  1 -1 -1 -1  1  1 -1 -1  1  1  1  1  1 -1 -1 -1  1 -1 -1 -1  1 -1 -1
  1 -1 -1 -1 -1  1  1 -1  1 -1  1  1  1  1  1  1 -1 -1  1 -1  1  1 -1  1 -1
  1 -1 -1  1  1 -1 -1  1  1 -1 -1  1 -1 -1 -1  1 -1 -1  1 -1 -1  1 -1  1  1
 -1  1 -1 -1  1  1 -1 -1 -1 -1  1 -1 -1  1  1 -1  1 -1  1  1  1  1 -1  1 -1
  1 -1 -1  1 -1  1  1  1  1  1 -1  1  1 -1  1  1  1  1  1  1 -1  1  1 -1  1
 -1 -1 -1 -1  1 -1  1  1 -1 -1  1 -1  1  1  1  1 -1 -1 -1  1 -1 -1 -1  1  1
  1  1  1  1 -1 -1 -1 -1  1 -1 -1  1 -1  1 -1 -1 -1 -1 -1  1  1 -1 -1  1 -1
 -1  1 -1  1  1 -1 -1 -1  1 -1 -1  1  1  1 -1  1  1  1 -1 -1  1  1  1 -1  1
 -1  1  1  1 -1  1  1  1  1  1  1 -1  1  1  1  1 -1 -1 -1  1 -1 -1 -1  1 -1
 -1  1 -1  1 -1  1  1  1  1  1 -1  1  1  1 -1 -1  1 -1 -1  1  1 -1 -1 -1 -1]

In [16]:
walk = steps.cumsum()
print walk


[ -1  -2  -1   0  -1  -2  -3  -2  -1   0  -1  -2  -3  -2  -1  -2  -3  -2
  -1   0   1   2   3   2   3   4   3   2   1   2   3   2   3   2   3   4
   3   4   5   6   5   4   3   2   1   0   1   2   1   0  -1   0  -1  -2
  -1   0  -1   0  -1  -2  -1   0  -1  -2  -1   0  -1   0   1   2   1   0
   1   0   1   0  -1  -2  -1   0  -1   0  -1   0  -1   0   1   2   1   0
  -1   0   1   0   1   0  -1  -2  -1  -2  -3  -4  -3  -4  -3  -4  -3  -4
  -5  -6  -7  -6  -5  -4  -5  -4  -5  -6  -5  -6  -5  -4  -3  -4  -5  -6
  -5  -6  -7  -6  -7  -8  -9 -10 -11 -10 -11 -10  -9  -8  -7  -6  -5  -6
  -7  -8  -9  -8  -9  -8  -7  -6  -7  -6  -7  -6  -7  -6  -7  -6  -7  -6
  -7  -8  -9 -10 -11 -12 -13 -12 -11 -12 -11 -10 -11 -10  -9  -8  -9 -10
  -9  -8  -9  -8  -9  -8  -7  -6  -5  -4  -5  -4  -5  -4  -5  -4  -5  -6
  -5  -4  -5  -6  -5  -6  -5  -6  -5  -6  -5  -4  -3  -2  -3  -4  -3  -4
  -5  -6  -5  -4  -5  -4  -3  -2  -3  -4  -3  -4  -5  -6  -5  -4  -3  -4
  -5  -6  -7  -8  -9 -10 -11 -10 -11 -12 -11 -12 -11 -12 -13 -12 -13 -12
 -13 -12 -13 -14 -13 -14 -13 -12 -13 -14 -15 -14 -15 -14 -15 -16 -17 -18
 -19 -18 -17 -18 -19 -18 -17 -16 -17 -18 -19 -20 -19 -20 -21 -22 -21 -22
 -21 -20 -21 -20 -21 -20 -19 -20 -21 -22 -21 -20 -19 -20 -21 -22 -21 -22
 -23 -24 -23 -22 -23 -24 -23 -24 -23 -22 -23 -22 -21 -22 -23 -22 -23 -22
 -23 -24 -25 -24 -25 -24 -25 -24 -23 -22 -23 -24 -25 -24 -25 -24 -25 -26
 -27 -26 -27 -28 -27 -28 -27 -26 -27 -28 -27 -26 -27 -28 -27 -28 -29 -28
 -29 -28 -29 -28 -27 -28 -29 -30 -31 -32 -31 -32 -33 -32 -33 -34 -35 -34
 -35 -34 -35 -34 -35 -34 -33 -34 -33 -32 -33 -32 -31 -30 -29 -28 -27 -28
 -27 -26 -27 -26 -25 -24 -23 -22 -23 -24 -23 -24 -23 -22 -21 -20 -21 -20
 -19 -18 -19 -20 -19 -20 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -27 -28
 -29 -28 -27 -28 -29 -28 -29 -30 -29 -30 -31 -32 -31 -30 -31 -32 -31 -30
 -29 -28 -29 -30 -29 -28 -27 -28 -27 -28 -29 -30 -31 -32 -31 -32 -31 -32
 -31 -32 -31 -32 -31 -30 -29 -28 -27 -26 -27 -28 -27 -28 -27 -28 -29 -30
 -31 -32 -33 -34 -33 -34 -35 -34 -35 -34 -33 -34 -35 -36 -37 -38 -39 -38
 -37 -38 -37 -36 -35 -36 -37 -36 -37 -36 -35 -34 -33 -34 -35 -34 -35 -34
 -33 -34 -35 -36 -35 -34 -35 -36 -35 -34 -33 -34 -33 -34 -35 -36 -35 -34
 -35 -36 -35 -36 -37 -36 -35 -34 -35 -36 -37 -36 -35 -34 -35 -34 -33 -34
 -33 -34 -33 -34 -33 -34 -33 -34 -33 -34 -33 -34 -33 -32 -33 -32 -33 -32
 -33 -34 -35 -34 -35 -34 -35 -36 -37 -38 -39 -40 -41 -40 -39 -38 -39 -38
 -39 -40 -39 -38 -37 -36 -37 -38 -37 -36 -37 -36 -35 -34 -35 -34 -33 -34
 -35 -34 -33 -32 -33 -32 -31 -30 -31 -30 -29 -30 -29 -30 -29 -30 -31 -32
 -33 -32 -31 -30 -29 -28 -27 -28 -29 -28 -27 -28 -29 -30 -29 -28 -29 -30
 -31 -30 -29 -28 -29 -30 -31 -32 -33 -32 -31 -30 -29 -28 -29 -30 -31 -32
 -33 -34 -33 -34 -35 -36 -35 -34 -35 -36 -35 -36 -37 -38 -37 -38 -37 -36
 -35 -34 -33 -34 -33 -32 -33 -32 -33 -32 -31 -32 -33 -32 -31 -32 -33 -32
 -33 -32 -31 -30 -31 -30 -31 -30 -31 -32 -31 -30 -31 -32 -31 -32 -31 -32
 -33 -34 -35 -36 -35 -36 -37 -38 -39 -40 -39 -40 -39 -38 -39 -38 -37 -38
 -37 -36 -37 -36 -35 -36 -37 -38 -39 -40 -39 -40 -39 -40 -39 -40 -41 -42
 -41 -40 -41 -42 -41 -40 -39 -38 -37 -38 -39 -40 -39 -40 -41 -42 -41 -42
 -43 -42 -43 -44 -45 -46 -45 -44 -45 -44 -45 -44 -43 -42 -41 -40 -39 -40
 -41 -40 -41 -40 -39 -40 -39 -40 -39 -40 -41 -40 -39 -40 -41 -40 -39 -40
 -41 -40 -41 -42 -43 -42 -43 -44 -43 -44 -45 -44 -45 -44 -43 -44 -43 -44
 -45 -44 -43 -44 -45 -46 -47 -46 -47 -48 -47 -46 -47 -46 -47 -46 -45 -44
 -43 -44 -43 -44 -43 -44 -45 -44 -45 -44 -43 -42 -41 -40 -41 -40 -39 -40
 -39 -38 -37 -36 -35 -34 -35 -34 -33 -34 -33 -34 -35 -36 -37 -36 -37 -36
 -35 -36 -37 -36 -37 -36 -35 -34 -33 -34 -35 -36 -35 -36 -37 -38 -37 -36
 -35 -34 -33 -32 -33 -34 -35 -36 -35 -36 -37 -36 -37 -36 -37 -38 -39 -40
 -41 -40 -39 -40 -41 -40 -41 -42 -41 -42 -41 -40 -41 -42 -43 -42 -43 -44
 -43 -42 -41 -42 -41 -40 -39 -40 -41 -40 -39 -38 -39 -38 -39 -38 -37 -36
 -37 -36 -35 -34 -33 -32 -31 -32 -31 -30 -29 -28 -29 -30 -31 -30 -31 -32
 -33 -32 -33 -34 -33 -34 -33 -34 -33 -32 -31 -30 -29 -30 -29 -28 -27 -28
 -29 -28 -29 -30 -29 -28 -29 -30 -31 -32]

In [17]:
plt.plot(walk)


Out[17]:
[<matplotlib.lines.Line2D at 0x7f0a8908a710>]

In [36]:
#随机游走模型
nwalks = 5000
nsteps = 1000
draws = np.random.randint(0, 2, size=(nwalks, nsteps))
steps = np.where(draws > 0, 1, -1)
walks = steps.cumsum(1)
hits30 = (np.abs(walks) >= 30).any(1)
crossing_times = (np.abs(walks[hits30]) >= 30).argmax(1)
crossing_times.mean()


Out[36]:
504.57050528789659

In [ ]: