《利用python进行数据分析》ch04

来源:互联网 发布:淘宝显示原价和折扣价 编辑:程序博客网 时间:2024/06/11 23:42
data1 = [6, 7.5, 8, 0, 1 ]
import numpy as nparr1 = np.array(data1)
arr1
array([ 6. ,  7.5,  8. ,  0. ,  1. ])
arr1.dtype
dtype('float64')
arr2 = np.array([[1,2,3,4],[5,6,7,8]])
arr2
array([[1, 2, 3, 4],       [5, 6, 7, 8]])
arr2.dtype
dtype('int32')
arr2.ndim
2
arr2.shape
(2, 4)
np.zeros(10)
array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])
np.zeros((3,6))
array([[ 0.,  0.,  0.,  0.,  0.,  0.],       [ 0.,  0.,  0.,  0.,  0.,  0.],       [ 0.,  0.,  0.,  0.,  0.,  0.]])
np.empty((2,3,4))
array([[[  5.20332695e-316,   7.75683064e-322,   0.00000000e+000,           0.00000000e+000],        [  8.45593933e-307,   5.02034658e+175,   2.53230277e-052,           3.70532239e-057],        [  3.59317820e-052,   4.66380380e-033,   1.47763641e+248,           1.16096346e-028]],       [[  7.69165785e+218,   1.35617292e+248,   7.78836466e+010,           3.80201643e-052],        [  6.14288016e-062,   6.00456200e-067,   4.26582608e-096,           6.32299154e+233],        [  6.48224638e+170,   5.22411352e+257,   5.74020278e+180,           8.37174974e-144]]])
np.arange(15)
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14])
 float_arr2 = arr2.astype(np.float64)
float_arr2
array([[ 1.,  2.,  3.,  4.],       [ 5.,  6.,  7.,  8.]])
num_strings = np.array(['1.24','3.5','5.89'])
num = num_strings.astype(np.float64)
num
array([ 1.24,  3.5 ,  5.89])
arr = np.array([[1,2,3],[4,5,6]])
arr
array([[1, 2, 3],       [4, 5, 6]])
arr + 3
array([[4, 5, 6],       [7, 8, 9]])
arr * arr
array([[ 1,  4,  9],       [16, 25, 36]])
1/arr
array([[ 1.        ,  0.5       ,  0.33333333],       [ 0.25      ,  0.2       ,  0.16666667]])
arr = np.arange(10)
arr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
arr[5]
5
arr[5:8]
array([5, 6, 7])
arr[5:7] =12
arr
array([ 0,  1,  2,  3,  4, 12, 12,  7,  8,  9])
arr_slice = arr
arr_slice
array([ 0,  1,  2,  3,  4, 12, 12,  7,  8,  9])
arr_slice[1:5] = 3
arr_slice
array([ 0,  3,  3,  3,  3, 12, 12,  7,  8,  9])
arr
array([ 0,  3,  3,  3,  3, 12, 12,  7,  8,  9])
arr_slice[:] = 4
arr_slice
array([4, 4, 4, 4, 4, 4, 4, 4, 4, 4])
arr
array([4, 4, 4, 4, 4, 4, 4, 4, 4, 4])
arr_2 = arr[5:8]
arr_2
array([4, 4, 4])
arr
array([4, 4, 4, 4, 4, 4, 4, 4, 4, 4])
arr_2 = 5
arr
array([4, 4, 4, 4, 4, 4, 4, 4, 4, 4])
arr_2
5
arr
array([4, 4, 4, 4, 4, 4, 4, 4, 4, 4])
arr_2 =arr[5:8]
arr_2
array([4, 4, 4])
arr_2[:] = 3
arr_2
array([3, 3, 3])
arr
array([4, 4, 4, 4, 4, 3, 3, 3, 4, 4])
arr_3 = arr[5:8]arr_3
array([3, 3, 3])
arr_3 = arr[5:8].copy()arr_3
array([3, 3, 3])
arr_3[:] = 5arr_3
array([5, 5, 5])
arr
array([4, 4, 4, 4, 4, 3, 3, 3, 4, 4])
arr3d = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])arr3d
array([[[ 1,  2,  3],        [ 4,  5,  6]],       [[ 7,  8,  9],        [10, 11, 12]]])
arr3d[0]
array([[1, 2, 3],       [4, 5, 6]])
arr3d[0,1]
array([4, 5, 6])
arr3d[0,1,2]
6
arr3d[0] =42arr3d
array([[[42, 42, 42],        [42, 42, 42]],       [[ 7,  8,  9],        [10, 11, 12]]])
arr2d
---------------------------------------------------------------------------NameError                                 Traceback (most recent call last)<ipython-input-75-e4875421ed12> in <module>()----> 1 arr2dNameError: name 'arr2d' is not defined
arr2d = np.array([[1,2,3],[4,5,6],[7,8,9]])arr2d
array([[1, 2, 3],       [4, 5, 6],       [7, 8, 9]])

arr2d[:2]

arr2d[:2,1:] arr2d[2:, :]
array([[7, 8, 9]])
arr2d[:,0:1]
array([[1],       [4],       [7]])

布尔型索引

names = np.array(['Bob','Joe','Will','Bob','Will','Joe','Joe'])names
array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'],       dtype='<U4')
data = np.random.randn(7 ,4)data
array([[-0.05519961, -0.6695114 ,  0.73873212,  1.35429108],       [ 0.26574674, -0.67678125,  0.68455009,  1.20532802],       [ 1.91907976,  0.17437032, -0.34026484, -1.09242711],       [ 0.13644762,  0.06578062,  0.97828842, -2.27956845],       [-1.22419022, -0.20714661,  0.49776557, -0.18843655],       [-2.91283946, -0.42014576, -1.48466495, -1.36583399],       [-1.59793333,  0.38929168,  0.91178511,  0.28523578]])
names == 'Bob'
array([ True, False, False,  True, False, False, False], dtype=bool)
data[names == 'Bob']
array([[-0.05519961, -0.6695114 ,  0.73873212,  1.35429108],       [ 0.13644762,  0.06578062,  0.97828842, -2.27956845]])
data[names == 'Bob', 2:]
array([[ 0.73873212,  1.35429108],       [ 0.97828842, -2.27956845]])
data[names == 'Bob', 3]
array([ 1.35429108, -2.27956845])

花式索引

arr = np.empty((8,4))for i in range(8):    arr[i] = iarr
array([[ 0.,  0.,  0.,  0.],       [ 1.,  1.,  1.,  1.],       [ 2.,  2.,  2.,  2.],       [ 3.,  3.,  3.,  3.],       [ 4.,  4.,  4.,  4.],       [ 5.,  5.,  5.,  5.],       [ 6.,  6.,  6.,  6.],       [ 7.,  7.,  7.,  7.]])
arr[[4,3,0,6]]
array([[ 4.,  4.,  4.,  4.],       [ 3.,  3.,  3.,  3.],       [ 0.,  0.,  0.,  0.],       [ 6.,  6.,  6.,  6.]])
arr[[-3,-5,-7]]
array([[ 5.,  5.,  5.,  5.],       [ 3.,  3.,  3.,  3.],       [ 1.,  1.,  1.,  1.]])
arr[[3,-5,-7]]
array([[ 3.,  3.,  3.,  3.],       [ 3.,  3.,  3.,  3.],       [ 1.,  1.,  1.,  1.]])
arr = np.arange(32).reshape(8,4)arr
array([[ 0,  1,  2,  3],       [ 4,  5,  6,  7],       [ 8,  9, 10, 11],       [12, 13, 14, 15],       [16, 17, 18, 19],       [20, 21, 22, 23],       [24, 25, 26, 27],       [28, 29, 30, 31]])

对array索引,一次传入多个索引值,会得到一个一维数组,比如:

arr[[1,5,7,2],[0,2,3,1]]
array([ 4, 22, 31,  9])
arr[[1,5,7,2]][:,[0,2,3,1]]
array([[ 4,  6,  7,  5],       [20, 22, 23, 21],       [28, 30, 31, 29],       [ 8, 10, 11,  9]])
arr[np.ix_([1,5,7,2],[0,3,1,2])]
array([[ 4,  7,  5,  6],       [20, 23, 21, 22],       [28, 31, 29, 30],       [ 8, 11,  9, 10]])
arr = np.arange(15).reshape((3,5))arr
array([[ 0,  1,  2,  3,  4],       [ 5,  6,  7,  8,  9],       [10, 11, 12, 13, 14]])
arr.T
array([[ 0,  5, 10],       [ 1,  6, 11],       [ 2,  7, 12],       [ 3,  8, 13],       [ 4,  9, 14]])
arr = np.random.randn(6,3)arr
array([[ 0.82346196, -1.06194771, -0.75574777],       [-0.36525177,  0.20397179,  0.2792704 ],       [ 1.5388186 ,  0.5514322 , -0.55777723],       [ 0.32915877, -0.56420315, -0.58347459],       [-0.7558248 ,  1.77796125,  0.30935199],       [-1.0640522 , -0.40256508,  0.76424839]])
np.dot(arr.T,arr)
array([[ 4.99128485, -1.20160984, -2.82172339],       [-1.20160984,  5.11494493,  1.12350592],       [-2.82172339,  1.12350592,  1.98047894]])
arr = np.arange(16).reshape(2,2,4)arr
array([[[ 0,  1,  2,  3],        [ 4,  5,  6,  7]],       [[ 8,  9, 10, 11],        [12, 13, 14, 15]]])
arr.transpose((1,0,2))
array([[[ 0,  1,  2,  3],        [ 8,  9, 10, 11]],       [[ 4,  5,  6,  7],        [12, 13, 14, 15]]])

通用函数: 快速的元素级数组函数

arr = np.arange(10)arr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.sqrt(arr)
array([ 0.        ,  1.        ,  1.41421356,  1.73205081,  2.        ,        2.23606798,  2.44948974,  2.64575131,  2.82842712,  3.        ])
np.exp(arr)
array([  1.00000000e+00,   2.71828183e+00,   7.38905610e+00,         2.00855369e+01,   5.45981500e+01,   1.48413159e+02,         4.03428793e+02,   1.09663316e+03,   2.98095799e+03,         8.10308393e+03])
x = np.random.randn(8)y = np.random.randn(8)print(x)print(y)
[ 0.28563688 -0.78764476  0.96194196  0.41051718 -0.41069022 -0.38002866 -1.13269593 -1.58454522][ 1.18490392 -1.03470854 -0.75579218 -1.57761954  0.2889456  -0.75329086  0.68484807  0.94755826]
np.rint(x)
array([ 0., -1.,  1.,  0., -0., -0., -1., -2.])
np.add(x,y)
array([ 1.4705408 , -1.82235331,  0.20614978, -1.16710236, -0.12174462,       -1.13331953, -0.44784786, -0.63698696])
points = np.arange(-5,5,0.01)points
array([ -5.00000000e+00,  -4.99000000e+00,  -4.98000000e+00,        -4.97000000e+00,  -4.96000000e+00,  -4.95000000e+00,        -4.94000000e+00,  -4.93000000e+00,  -4.92000000e+00,        -4.91000000e+00,  -4.90000000e+00,  -4.89000000e+00,        -4.88000000e+00,  -4.87000000e+00,  -4.86000000e+00,        -4.85000000e+00,  -4.84000000e+00,  -4.83000000e+00,        -4.82000000e+00,  -4.81000000e+00,  -4.80000000e+00,        -4.79000000e+00,  -4.78000000e+00,  -4.77000000e+00,        -4.76000000e+00,  -4.75000000e+00,  -4.74000000e+00,        -4.73000000e+00,  -4.72000000e+00,  -4.71000000e+00,        -4.70000000e+00,  -4.69000000e+00,  -4.68000000e+00,        -4.67000000e+00,  -4.66000000e+00,  -4.65000000e+00,        -4.64000000e+00,  -4.63000000e+00,  -4.62000000e+00,        -4.61000000e+00,  -4.60000000e+00,  -4.59000000e+00,        -4.58000000e+00,  -4.57000000e+00,  -4.56000000e+00,        -4.55000000e+00,  -4.54000000e+00,  -4.53000000e+00,        -4.52000000e+00,  -4.51000000e+00,  -4.50000000e+00,        -4.49000000e+00,  -4.48000000e+00,  -4.47000000e+00,        -4.46000000e+00,  -4.45000000e+00,  -4.44000000e+00,        -4.43000000e+00,  -4.42000000e+00,  -4.41000000e+00,        -4.40000000e+00,  -4.39000000e+00,  -4.38000000e+00,        -4.37000000e+00,  -4.36000000e+00,  -4.35000000e+00,        -4.34000000e+00,  -4.33000000e+00,  -4.32000000e+00,        -4.31000000e+00,  -4.30000000e+00,  -4.29000000e+00,        -4.28000000e+00,  -4.27000000e+00,  -4.26000000e+00,        -4.25000000e+00,  -4.24000000e+00,  -4.23000000e+00,        -4.22000000e+00,  -4.21000000e+00,  -4.20000000e+00,        -4.19000000e+00,  -4.18000000e+00,  -4.17000000e+00,        -4.16000000e+00,  -4.15000000e+00,  -4.14000000e+00,        -4.13000000e+00,  -4.12000000e+00,  -4.11000000e+00,        -4.10000000e+00,  -4.09000000e+00,  -4.08000000e+00,        -4.07000000e+00,  -4.06000000e+00,  -4.05000000e+00,        -4.04000000e+00,  -4.03000000e+00,  -4.02000000e+00,        -4.01000000e+00,  -4.00000000e+00,  -3.99000000e+00,        -3.98000000e+00,  -3.97000000e+00,  -3.96000000e+00,        -3.95000000e+00,  -3.94000000e+00,  -3.93000000e+00,        -3.92000000e+00,  -3.91000000e+00,  -3.90000000e+00,        -3.89000000e+00,  -3.88000000e+00,  -3.87000000e+00,        -3.86000000e+00,  -3.85000000e+00,  -3.84000000e+00,        -3.83000000e+00,  -3.82000000e+00,  -3.81000000e+00,        -3.80000000e+00,  -3.79000000e+00,  -3.78000000e+00,        -3.77000000e+00,  -3.76000000e+00,  -3.75000000e+00,        -3.74000000e+00,  -3.73000000e+00,  -3.72000000e+00,        -3.71000000e+00,  -3.70000000e+00,  -3.69000000e+00,        -3.68000000e+00,  -3.67000000e+00,  -3.66000000e+00,        -3.65000000e+00,  -3.64000000e+00,  -3.63000000e+00,        -3.62000000e+00,  -3.61000000e+00,  -3.60000000e+00,        -3.59000000e+00,  -3.58000000e+00,  -3.57000000e+00,        -3.56000000e+00,  -3.55000000e+00,  -3.54000000e+00,        -3.53000000e+00,  -3.52000000e+00,  -3.51000000e+00,        -3.50000000e+00,  -3.49000000e+00,  -3.48000000e+00,        -3.47000000e+00,  -3.46000000e+00,  -3.45000000e+00,        -3.44000000e+00,  -3.43000000e+00,  -3.42000000e+00,        -3.41000000e+00,  -3.40000000e+00,  -3.39000000e+00,        -3.38000000e+00,  -3.37000000e+00,  -3.36000000e+00,        -3.35000000e+00,  -3.34000000e+00,  -3.33000000e+00,        -3.32000000e+00,  -3.31000000e+00,  -3.30000000e+00,        -3.29000000e+00,  -3.28000000e+00,  -3.27000000e+00,        -3.26000000e+00,  -3.25000000e+00,  -3.24000000e+00,        -3.23000000e+00,  -3.22000000e+00,  -3.21000000e+00,        -3.20000000e+00,  -3.19000000e+00,  -3.18000000e+00,        -3.17000000e+00,  -3.16000000e+00,  -3.15000000e+00,        -3.14000000e+00,  -3.13000000e+00,  -3.12000000e+00,        -3.11000000e+00,  -3.10000000e+00,  -3.09000000e+00,        -3.08000000e+00,  -3.07000000e+00,  -3.06000000e+00,        -3.05000000e+00,  -3.04000000e+00,  -3.03000000e+00,        -3.02000000e+00,  -3.01000000e+00,  -3.00000000e+00,        -2.99000000e+00,  -2.98000000e+00,  -2.97000000e+00,        -2.96000000e+00,  -2.95000000e+00,  -2.94000000e+00,        -2.93000000e+00,  -2.92000000e+00,  -2.91000000e+00,        -2.90000000e+00,  -2.89000000e+00,  -2.88000000e+00,        -2.87000000e+00,  -2.86000000e+00,  -2.85000000e+00,        -2.84000000e+00,  -2.83000000e+00,  -2.82000000e+00,        -2.81000000e+00,  -2.80000000e+00,  -2.79000000e+00,        -2.78000000e+00,  -2.77000000e+00,  -2.76000000e+00,        -2.75000000e+00,  -2.74000000e+00,  -2.73000000e+00,        -2.72000000e+00,  -2.71000000e+00,  -2.70000000e+00,        -2.69000000e+00,  -2.68000000e+00,  -2.67000000e+00,        -2.66000000e+00,  -2.65000000e+00,  -2.64000000e+00,        -2.63000000e+00,  -2.62000000e+00,  -2.61000000e+00,        -2.60000000e+00,  -2.59000000e+00,  -2.58000000e+00,        -2.57000000e+00,  -2.56000000e+00,  -2.55000000e+00,        -2.54000000e+00,  -2.53000000e+00,  -2.52000000e+00,        -2.51000000e+00,  -2.50000000e+00,  -2.49000000e+00,        -2.48000000e+00,  -2.47000000e+00,  -2.46000000e+00,        -2.45000000e+00,  -2.44000000e+00,  -2.43000000e+00,        -2.42000000e+00,  -2.41000000e+00,  -2.40000000e+00,        -2.39000000e+00,  -2.38000000e+00,  -2.37000000e+00,        -2.36000000e+00,  -2.35000000e+00,  -2.34000000e+00,        -2.33000000e+00,  -2.32000000e+00,  -2.31000000e+00,        -2.30000000e+00,  -2.29000000e+00,  -2.28000000e+00,        -2.27000000e+00,  -2.26000000e+00,  -2.25000000e+00,        -2.24000000e+00,  -2.23000000e+00,  -2.22000000e+00,        -2.21000000e+00,  -2.20000000e+00,  -2.19000000e+00,        -2.18000000e+00,  -2.17000000e+00,  -2.16000000e+00,        -2.15000000e+00,  -2.14000000e+00,  -2.13000000e+00,        -2.12000000e+00,  -2.11000000e+00,  -2.10000000e+00,        -2.09000000e+00,  -2.08000000e+00,  -2.07000000e+00,        -2.06000000e+00,  -2.05000000e+00,  -2.04000000e+00,        -2.03000000e+00,  -2.02000000e+00,  -2.01000000e+00,        -2.00000000e+00,  -1.99000000e+00,  -1.98000000e+00,        -1.97000000e+00,  -1.96000000e+00,  -1.95000000e+00,        -1.94000000e+00,  -1.93000000e+00,  -1.92000000e+00,        -1.91000000e+00,  -1.90000000e+00,  -1.89000000e+00,        -1.88000000e+00,  -1.87000000e+00,  -1.86000000e+00,        -1.85000000e+00,  -1.84000000e+00,  -1.83000000e+00,        -1.82000000e+00,  -1.81000000e+00,  -1.80000000e+00,        -1.79000000e+00,  -1.78000000e+00,  -1.77000000e+00,        -1.76000000e+00,  -1.75000000e+00,  -1.74000000e+00,        -1.73000000e+00,  -1.72000000e+00,  -1.71000000e+00,        -1.70000000e+00,  -1.69000000e+00,  -1.68000000e+00,        -1.67000000e+00,  -1.66000000e+00,  -1.65000000e+00,        -1.64000000e+00,  -1.63000000e+00,  -1.62000000e+00,        -1.61000000e+00,  -1.60000000e+00,  -1.59000000e+00,        -1.58000000e+00,  -1.57000000e+00,  -1.56000000e+00,        -1.55000000e+00,  -1.54000000e+00,  -1.53000000e+00,        -1.52000000e+00,  -1.51000000e+00,  -1.50000000e+00,        -1.49000000e+00,  -1.48000000e+00,  -1.47000000e+00,        -1.46000000e+00,  -1.45000000e+00,  -1.44000000e+00,        -1.43000000e+00,  -1.42000000e+00,  -1.41000000e+00,        -1.40000000e+00,  -1.39000000e+00,  -1.38000000e+00,        -1.37000000e+00,  -1.36000000e+00,  -1.35000000e+00,        -1.34000000e+00,  -1.33000000e+00,  -1.32000000e+00,        -1.31000000e+00,  -1.30000000e+00,  -1.29000000e+00,        -1.28000000e+00,  -1.27000000e+00,  -1.26000000e+00,        -1.25000000e+00,  -1.24000000e+00,  -1.23000000e+00,        -1.22000000e+00,  -1.21000000e+00,  -1.20000000e+00,        -1.19000000e+00,  -1.18000000e+00,  -1.17000000e+00,        -1.16000000e+00,  -1.15000000e+00,  -1.14000000e+00,        -1.13000000e+00,  -1.12000000e+00,  -1.11000000e+00,        -1.10000000e+00,  -1.09000000e+00,  -1.08000000e+00,        -1.07000000e+00,  -1.06000000e+00,  -1.05000000e+00,        -1.04000000e+00,  -1.03000000e+00,  -1.02000000e+00,        -1.01000000e+00,  -1.00000000e+00,  -9.90000000e-01,        -9.80000000e-01,  -9.70000000e-01,  -9.60000000e-01,        -9.50000000e-01,  -9.40000000e-01,  -9.30000000e-01,        -9.20000000e-01,  -9.10000000e-01,  -9.00000000e-01,        -8.90000000e-01,  -8.80000000e-01,  -8.70000000e-01,        -8.60000000e-01,  -8.50000000e-01,  -8.40000000e-01,        -8.30000000e-01,  -8.20000000e-01,  -8.10000000e-01,        -8.00000000e-01,  -7.90000000e-01,  -7.80000000e-01,        -7.70000000e-01,  -7.60000000e-01,  -7.50000000e-01,        -7.40000000e-01,  -7.30000000e-01,  -7.20000000e-01,        -7.10000000e-01,  -7.00000000e-01,  -6.90000000e-01,        -6.80000000e-01,  -6.70000000e-01,  -6.60000000e-01,        -6.50000000e-01,  -6.40000000e-01,  -6.30000000e-01,        -6.20000000e-01,  -6.10000000e-01,  -6.00000000e-01,        -5.90000000e-01,  -5.80000000e-01,  -5.70000000e-01,        -5.60000000e-01,  -5.50000000e-01,  -5.40000000e-01,        -5.30000000e-01,  -5.20000000e-01,  -5.10000000e-01,        -5.00000000e-01,  -4.90000000e-01,  -4.80000000e-01,        -4.70000000e-01,  -4.60000000e-01,  -4.50000000e-01,        -4.40000000e-01,  -4.30000000e-01,  -4.20000000e-01,        -4.10000000e-01,  -4.00000000e-01,  -3.90000000e-01,        -3.80000000e-01,  -3.70000000e-01,  -3.60000000e-01,        -3.50000000e-01,  -3.40000000e-01,  -3.30000000e-01,        -3.20000000e-01,  -3.10000000e-01,  -3.00000000e-01,        -2.90000000e-01,  -2.80000000e-01,  -2.70000000e-01,        -2.60000000e-01,  -2.50000000e-01,  -2.40000000e-01,        -2.30000000e-01,  -2.20000000e-01,  -2.10000000e-01,        -2.00000000e-01,  -1.90000000e-01,  -1.80000000e-01,        -1.70000000e-01,  -1.60000000e-01,  -1.50000000e-01,        -1.40000000e-01,  -1.30000000e-01,  -1.20000000e-01,        -1.10000000e-01,  -1.00000000e-01,  -9.00000000e-02,        -8.00000000e-02,  -7.00000000e-02,  -6.00000000e-02,        -5.00000000e-02,  -4.00000000e-02,  -3.00000000e-02,        -2.00000000e-02,  -1.00000000e-02,  -1.06581410e-13,         1.00000000e-02,   2.00000000e-02,   3.00000000e-02,         4.00000000e-02,   5.00000000e-02,   6.00000000e-02,         7.00000000e-02,   8.00000000e-02,   9.00000000e-02,         1.00000000e-01,   1.10000000e-01,   1.20000000e-01,         1.30000000e-01,   1.40000000e-01,   1.50000000e-01,         1.60000000e-01,   1.70000000e-01,   1.80000000e-01,         1.90000000e-01,   2.00000000e-01,   2.10000000e-01,         2.20000000e-01,   2.30000000e-01,   2.40000000e-01,         2.50000000e-01,   2.60000000e-01,   2.70000000e-01,         2.80000000e-01,   2.90000000e-01,   3.00000000e-01,         3.10000000e-01,   3.20000000e-01,   3.30000000e-01,         3.40000000e-01,   3.50000000e-01,   3.60000000e-01,         3.70000000e-01,   3.80000000e-01,   3.90000000e-01,         4.00000000e-01,   4.10000000e-01,   4.20000000e-01,         4.30000000e-01,   4.40000000e-01,   4.50000000e-01,         4.60000000e-01,   4.70000000e-01,   4.80000000e-01,         4.90000000e-01,   5.00000000e-01,   5.10000000e-01,         5.20000000e-01,   5.30000000e-01,   5.40000000e-01,         5.50000000e-01,   5.60000000e-01,   5.70000000e-01,         5.80000000e-01,   5.90000000e-01,   6.00000000e-01,         6.10000000e-01,   6.20000000e-01,   6.30000000e-01,         6.40000000e-01,   6.50000000e-01,   6.60000000e-01,         6.70000000e-01,   6.80000000e-01,   6.90000000e-01,         7.00000000e-01,   7.10000000e-01,   7.20000000e-01,         7.30000000e-01,   7.40000000e-01,   7.50000000e-01,         7.60000000e-01,   7.70000000e-01,   7.80000000e-01,         7.90000000e-01,   8.00000000e-01,   8.10000000e-01,         8.20000000e-01,   8.30000000e-01,   8.40000000e-01,         8.50000000e-01,   8.60000000e-01,   8.70000000e-01,         8.80000000e-01,   8.90000000e-01,   9.00000000e-01,         9.10000000e-01,   9.20000000e-01,   9.30000000e-01,         9.40000000e-01,   9.50000000e-01,   9.60000000e-01,         9.70000000e-01,   9.80000000e-01,   9.90000000e-01,         1.00000000e+00,   1.01000000e+00,   1.02000000e+00,         1.03000000e+00,   1.04000000e+00,   1.05000000e+00,         1.06000000e+00,   1.07000000e+00,   1.08000000e+00,         1.09000000e+00,   1.10000000e+00,   1.11000000e+00,         1.12000000e+00,   1.13000000e+00,   1.14000000e+00,         1.15000000e+00,   1.16000000e+00,   1.17000000e+00,         1.18000000e+00,   1.19000000e+00,   1.20000000e+00,         1.21000000e+00,   1.22000000e+00,   1.23000000e+00,         1.24000000e+00,   1.25000000e+00,   1.26000000e+00,         1.27000000e+00,   1.28000000e+00,   1.29000000e+00,         1.30000000e+00,   1.31000000e+00,   1.32000000e+00,         1.33000000e+00,   1.34000000e+00,   1.35000000e+00,         1.36000000e+00,   1.37000000e+00,   1.38000000e+00,         1.39000000e+00,   1.40000000e+00,   1.41000000e+00,         1.42000000e+00,   1.43000000e+00,   1.44000000e+00,         1.45000000e+00,   1.46000000e+00,   1.47000000e+00,         1.48000000e+00,   1.49000000e+00,   1.50000000e+00,         1.51000000e+00,   1.52000000e+00,   1.53000000e+00,         1.54000000e+00,   1.55000000e+00,   1.56000000e+00,         1.57000000e+00,   1.58000000e+00,   1.59000000e+00,         1.60000000e+00,   1.61000000e+00,   1.62000000e+00,         1.63000000e+00,   1.64000000e+00,   1.65000000e+00,         1.66000000e+00,   1.67000000e+00,   1.68000000e+00,         1.69000000e+00,   1.70000000e+00,   1.71000000e+00,         1.72000000e+00,   1.73000000e+00,   1.74000000e+00,         1.75000000e+00,   1.76000000e+00,   1.77000000e+00,         1.78000000e+00,   1.79000000e+00,   1.80000000e+00,         1.81000000e+00,   1.82000000e+00,   1.83000000e+00,         1.84000000e+00,   1.85000000e+00,   1.86000000e+00,         1.87000000e+00,   1.88000000e+00,   1.89000000e+00,         1.90000000e+00,   1.91000000e+00,   1.92000000e+00,         1.93000000e+00,   1.94000000e+00,   1.95000000e+00,         1.96000000e+00,   1.97000000e+00,   1.98000000e+00,         1.99000000e+00,   2.00000000e+00,   2.01000000e+00,         2.02000000e+00,   2.03000000e+00,   2.04000000e+00,         2.05000000e+00,   2.06000000e+00,   2.07000000e+00,         2.08000000e+00,   2.09000000e+00,   2.10000000e+00,         2.11000000e+00,   2.12000000e+00,   2.13000000e+00,         2.14000000e+00,   2.15000000e+00,   2.16000000e+00,         2.17000000e+00,   2.18000000e+00,   2.19000000e+00,         2.20000000e+00,   2.21000000e+00,   2.22000000e+00,         2.23000000e+00,   2.24000000e+00,   2.25000000e+00,         2.26000000e+00,   2.27000000e+00,   2.28000000e+00,         2.29000000e+00,   2.30000000e+00,   2.31000000e+00,         2.32000000e+00,   2.33000000e+00,   2.34000000e+00,         2.35000000e+00,   2.36000000e+00,   2.37000000e+00,         2.38000000e+00,   2.39000000e+00,   2.40000000e+00,         2.41000000e+00,   2.42000000e+00,   2.43000000e+00,         2.44000000e+00,   2.45000000e+00,   2.46000000e+00,         2.47000000e+00,   2.48000000e+00,   2.49000000e+00,         2.50000000e+00,   2.51000000e+00,   2.52000000e+00,         2.53000000e+00,   2.54000000e+00,   2.55000000e+00,         2.56000000e+00,   2.57000000e+00,   2.58000000e+00,         2.59000000e+00,   2.60000000e+00,   2.61000000e+00,         2.62000000e+00,   2.63000000e+00,   2.64000000e+00,         2.65000000e+00,   2.66000000e+00,   2.67000000e+00,         2.68000000e+00,   2.69000000e+00,   2.70000000e+00,         2.71000000e+00,   2.72000000e+00,   2.73000000e+00,         2.74000000e+00,   2.75000000e+00,   2.76000000e+00,         2.77000000e+00,   2.78000000e+00,   2.79000000e+00,         2.80000000e+00,   2.81000000e+00,   2.82000000e+00,         2.83000000e+00,   2.84000000e+00,   2.85000000e+00,         2.86000000e+00,   2.87000000e+00,   2.88000000e+00,         2.89000000e+00,   2.90000000e+00,   2.91000000e+00,         2.92000000e+00,   2.93000000e+00,   2.94000000e+00,         2.95000000e+00,   2.96000000e+00,   2.97000000e+00,         2.98000000e+00,   2.99000000e+00,   3.00000000e+00,         3.01000000e+00,   3.02000000e+00,   3.03000000e+00,         3.04000000e+00,   3.05000000e+00,   3.06000000e+00,         3.07000000e+00,   3.08000000e+00,   3.09000000e+00,         3.10000000e+00,   3.11000000e+00,   3.12000000e+00,         3.13000000e+00,   3.14000000e+00,   3.15000000e+00,         3.16000000e+00,   3.17000000e+00,   3.18000000e+00,         3.19000000e+00,   3.20000000e+00,   3.21000000e+00,         3.22000000e+00,   3.23000000e+00,   3.24000000e+00,         3.25000000e+00,   3.26000000e+00,   3.27000000e+00,         3.28000000e+00,   3.29000000e+00,   3.30000000e+00,         3.31000000e+00,   3.32000000e+00,   3.33000000e+00,         3.34000000e+00,   3.35000000e+00,   3.36000000e+00,         3.37000000e+00,   3.38000000e+00,   3.39000000e+00,         3.40000000e+00,   3.41000000e+00,   3.42000000e+00,         3.43000000e+00,   3.44000000e+00,   3.45000000e+00,         3.46000000e+00,   3.47000000e+00,   3.48000000e+00,         3.49000000e+00,   3.50000000e+00,   3.51000000e+00,         3.52000000e+00,   3.53000000e+00,   3.54000000e+00,         3.55000000e+00,   3.56000000e+00,   3.57000000e+00,         3.58000000e+00,   3.59000000e+00,   3.60000000e+00,         3.61000000e+00,   3.62000000e+00,   3.63000000e+00,         3.64000000e+00,   3.65000000e+00,   3.66000000e+00,         3.67000000e+00,   3.68000000e+00,   3.69000000e+00,         3.70000000e+00,   3.71000000e+00,   3.72000000e+00,         3.73000000e+00,   3.74000000e+00,   3.75000000e+00,         3.76000000e+00,   3.77000000e+00,   3.78000000e+00,         3.79000000e+00,   3.80000000e+00,   3.81000000e+00,         3.82000000e+00,   3.83000000e+00,   3.84000000e+00,         3.85000000e+00,   3.86000000e+00,   3.87000000e+00,         3.88000000e+00,   3.89000000e+00,   3.90000000e+00,         3.91000000e+00,   3.92000000e+00,   3.93000000e+00,         3.94000000e+00,   3.95000000e+00,   3.96000000e+00,         3.97000000e+00,   3.98000000e+00,   3.99000000e+00,         4.00000000e+00,   4.01000000e+00,   4.02000000e+00,         4.03000000e+00,   4.04000000e+00,   4.05000000e+00,         4.06000000e+00,   4.07000000e+00,   4.08000000e+00,         4.09000000e+00,   4.10000000e+00,   4.11000000e+00,         4.12000000e+00,   4.13000000e+00,   4.14000000e+00,         4.15000000e+00,   4.16000000e+00,   4.17000000e+00,         4.18000000e+00,   4.19000000e+00,   4.20000000e+00,         4.21000000e+00,   4.22000000e+00,   4.23000000e+00,         4.24000000e+00,   4.25000000e+00,   4.26000000e+00,         4.27000000e+00,   4.28000000e+00,   4.29000000e+00,         4.30000000e+00,   4.31000000e+00,   4.32000000e+00,         4.33000000e+00,   4.34000000e+00,   4.35000000e+00,         4.36000000e+00,   4.37000000e+00,   4.38000000e+00,         4.39000000e+00,   4.40000000e+00,   4.41000000e+00,         4.42000000e+00,   4.43000000e+00,   4.44000000e+00,         4.45000000e+00,   4.46000000e+00,   4.47000000e+00,         4.48000000e+00,   4.49000000e+00,   4.50000000e+00,         4.51000000e+00,   4.52000000e+00,   4.53000000e+00,         4.54000000e+00,   4.55000000e+00,   4.56000000e+00,         4.57000000e+00,   4.58000000e+00,   4.59000000e+00,         4.60000000e+00,   4.61000000e+00,   4.62000000e+00,         4.63000000e+00,   4.64000000e+00,   4.65000000e+00,         4.66000000e+00,   4.67000000e+00,   4.68000000e+00,         4.69000000e+00,   4.70000000e+00,   4.71000000e+00,         4.72000000e+00,   4.73000000e+00,   4.74000000e+00,         4.75000000e+00,   4.76000000e+00,   4.77000000e+00,         4.78000000e+00,   4.79000000e+00,   4.80000000e+00,         4.81000000e+00,   4.82000000e+00,   4.83000000e+00,         4.84000000e+00,   4.85000000e+00,   4.86000000e+00,         4.87000000e+00,   4.88000000e+00,   4.89000000e+00,         4.90000000e+00,   4.91000000e+00,   4.92000000e+00,         4.93000000e+00,   4.94000000e+00,   4.95000000e+00,         4.96000000e+00,   4.97000000e+00,   4.98000000e+00,         4.99000000e+00])
xs, ys = np.meshgrid(points, points)
ys
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]])
import matplotlib.pyplot as pltz = np.sqrt(xs **2 + ys ** 2)z
array([[ 7.07106781,  7.06400028,  7.05693985, ...,  7.04988652,         7.05693985,  7.06400028],       [ 7.06400028,  7.05692568,  7.04985815, ...,  7.04279774,         7.04985815,  7.05692568],       [ 7.05693985,  7.04985815,  7.04278354, ...,  7.03571603,         7.04278354,  7.04985815],       ...,        [ 7.04988652,  7.04279774,  7.03571603, ...,  7.0286414 ,         7.03571603,  7.04279774],       [ 7.05693985,  7.04985815,  7.04278354, ...,  7.03571603,         7.04278354,  7.04985815],       [ 7.06400028,  7.05692568,  7.04985815, ...,  7.04279774,         7.04985815,  7.05692568]])
#import matplotlib.pyplot as plt%matplotlib inline    #why????plt.title('Image plot of $\sqrt{x^2+y^2}$ for a grid of values')plt.imshow(z, cmap =plt.cm.gray)plt.colorbar()
<matplotlib.colorbar.Colorbar at 0xdd9c1d0>

png

为什么画图前面要加一句%matplotlib inline,而有的画图只需要一句plt.show()

将条件逻辑表达为数组运算

xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])cond = np.array([True, False, True, True, False]) 
result = [(x if c else y) for x, y, c in zip(xarr, yarr, cond)]
result
[1.1000000000000001, 2.2000000000000002, 1.3, 1.3999999999999999, 2.5]
result = np.where(cond, xarr, yarr)
result
array([ 1.1,  2.2,  1.3,  1.4,  2.5])
result = np.where(arr > 0, 2, -2)result
array([[-2,  2,  2,  2],       [ 2,  2,  2,  2],       [-2, -2, -2,  2],       [ 2,  2,  2, -2]])
plt.imshow(result)
<matplotlib.image.AxesImage at 0xe0a1908>

png

cond1 = [True,False]cond2 = [False,True]
result = []for i in range(2):    if cond[i] and cond2[i]:        result.append(0)    elif cond1[i]:        result.append(1)    elif cond2[i]:        result.append(2)    else:        result.append(3)result
[1, 2]
cond1 = np.array([True,False])cond2 = np.array([False,True])
np.where(cond1 & cond2,0,        np.where(cond1, 1,                np.where(cond2,2,3)))
array([1, 2])
result = 1 * (cond1 -cond2) + 2 * (cond2 & -cond1) +3 * -(cond1 |cond2)result
C:\software\Anaconda3\lib\site-packages\ipykernel_launcher.py:1: DeprecationWarning: numpy boolean subtract, the `-` operator, is deprecated, use the bitwise_xor, the `^` operator, or the logical_xor function instead.  """Entry point for launching an IPython kernel.C:\software\Anaconda3\lib\site-packages\ipykernel_launcher.py:1: DeprecationWarning: numpy boolean negative, the `-` operator, is deprecated, use the `~` operator or the logical_not function instead.  """Entry point for launching an IPython kernel.array([1, 3])

数学和统计方法

arr = np.random.randn(5,4)arr
array([[-0.36377842, -0.17607122, -0.0258077 , -0.5865342 ],       [-1.47991561,  1.10921795, -0.17721261, -0.06152169],       [-1.39358906, -0.66324552, -0.42652749,  1.07462862],       [-0.39533925, -1.0827531 , -0.73648657, -0.15557699],       [ 0.62799356, -0.61692436, -0.91043984, -0.08881203]])
arr.mean()
-0.3264347767422266
np.mean(arr)
-0.3264347767422266
arr.sum()
-6.5286955348445321
np.sum(arr)
-6.5286955348445321
arr.sum(axis = 1)
array([-1.15219154, -0.60943196, -1.40873344, -2.37015592, -0.98818266])
arr.sum(1)
array([-1.15219154, -0.60943196, -1.40873344, -2.37015592, -0.98818266])
arr.mean(1)
array([-0.28804788, -0.15235799, -0.35218336, -0.59253898, -0.24704567])
arr.mean(0)
array([-0.60092576, -0.28595525, -0.45529484,  0.03643674])
arr = np.array([[0,1,2],[3,4,5],[6,7,8]])arr
array([[0, 1, 2],       [3, 4, 5],       [6, 7, 8]])
arr.cumsum(1)
array([[ 0,  1,  3],       [ 3,  7, 12],       [ 6, 13, 21]], dtype=int32)
arr.cumprod(1)
array([[  0,   0,   0],       [  3,  12,  60],       [  6,  42, 336]], dtype=int32)

用于布尔型数组的方法

arr = np.random.randn(100)arr
array([-0.33080236,  1.39731624, -0.63438849, -0.27417423,  0.1066853 ,        0.08176844,  0.94680007,  0.82837666, -0.39614341,  0.10209779,        0.94752076,  0.59294992, -0.17801706,  1.39303804,  0.1615773 ,       -1.07270904,  1.52843682, -0.15335152,  0.33041451,  1.92640587,        2.16608662, -0.13468996, -0.80318435,  0.68395289, -2.68059591,        0.75975232,  0.8624497 , -0.40960463,  2.53795684, -0.04270983,       -0.85162822, -0.57499644,  0.05397767,  0.08112238,  0.69370525,        1.61010582,  0.73711426, -1.66321839,  0.36010073,  1.73937965,        0.18620921, -0.73990919,  1.55165714, -0.49130287,  0.73736008,       -0.65542611,  0.68313517,  0.93248214,  0.32072444,  0.15719621,       -0.58404954, -1.18846903, -1.21258747,  0.0847759 ,  1.01495945,        0.13684394,  0.49404896, -1.08274441, -0.42795516,  0.08322297,       -0.40474038,  0.09877496,  0.41921382, -0.54942632, -0.41349059,       -0.67371969, -1.51507714,  1.46129515, -1.10477602, -1.04760436,       -0.29026757,  2.38869938, -1.23313778,  0.51819882,  0.03096704,        1.56216147, -0.44781858,  1.07225266, -1.07910887, -2.23256931,       -1.16643406, -0.96328042, -0.46139959,  0.28375584,  0.07444683,       -0.68675767,  0.35658852,  1.40111431, -1.38139327,  1.03927675,       -1.60659403,  0.57145567, -0.11907813, -1.2219809 , -0.66428365,       -1.4139061 , -1.67651961, -0.59806616,  0.59122245,  0.25954556])
(arr > 0).sum()
53
bools = np.array([False, False, True, False])bools.any()
True
bools.all()
False
arr = np.random.randn(8)arr
array([ 0.70545065,  0.77665201, -0.64170527, -0.04357847, -0.29443727,       -0.53598113, -0.41382967,  0.07754725])
arr.sort()arr
array([-0.64170527, -0.53598113, -0.41382967, -0.29443727, -0.04357847,        0.07754725,  0.70545065,  0.77665201])
arr = np.random.randn(5,3)arr
array([[ 0.01207145, -0.22076429, -1.27830997],       [-1.02254742,  1.10692889,  0.50115412],       [-1.75082399, -0.33671574, -1.22980103],       [ 0.36758255,  0.99206518, -0.65983239],       [-0.95680182, -0.41475066,  0.15182405]])
arr.sort(1)arr
array([[-1.27830997, -0.22076429,  0.01207145],       [-1.02254742,  0.50115412,  1.10692889],       [-1.75082399, -1.22980103, -0.33671574],       [-0.65983239,  0.36758255,  0.99206518],       [-0.95680182, -0.41475066,  0.15182405]])
large_arr = np.random.randn(1000)large_arr.sort()large_arr
array([ -3.13601821e+00,  -2.99904054e+00,  -2.74212869e+00,        -2.73338432e+00,  -2.66555618e+00,  -2.60590138e+00,        -2.52873495e+00,  -2.42398037e+00,  -2.21593473e+00,        -2.10193673e+00,  -2.09235572e+00,  -2.08657504e+00,        -2.08225175e+00,  -2.07221549e+00,  -2.03348710e+00,        -2.01684786e+00,  -2.00754371e+00,  -1.98459142e+00,        -1.95478230e+00,  -1.94432959e+00,  -1.94333526e+00,        -1.93094530e+00,  -1.91088249e+00,  -1.90636040e+00,        -1.87764191e+00,  -1.85614786e+00,  -1.83216107e+00,        -1.82944145e+00,  -1.80442524e+00,  -1.80268048e+00,        -1.78967583e+00,  -1.78361883e+00,  -1.76666887e+00,        -1.75933662e+00,  -1.75444546e+00,  -1.74881215e+00,        -1.74683376e+00,  -1.71493838e+00,  -1.64509440e+00,        -1.63848847e+00,  -1.63432418e+00,  -1.57471348e+00,        -1.57128096e+00,  -1.56626084e+00,  -1.56356724e+00,        -1.56022657e+00,  -1.55667896e+00,  -1.55023989e+00,        -1.54863112e+00,  -1.54775389e+00,  -1.52921609e+00,        -1.52140557e+00,  -1.51815592e+00,  -1.51699006e+00,        -1.51698200e+00,  -1.51627755e+00,  -1.50859675e+00,        -1.50831600e+00,  -1.49710160e+00,  -1.49184397e+00,        -1.49049603e+00,  -1.48781407e+00,  -1.48687686e+00,        -1.48274449e+00,  -1.48253836e+00,  -1.48210874e+00,        -1.47224754e+00,  -1.45393091e+00,  -1.44478300e+00,        -1.43698612e+00,  -1.42676307e+00,  -1.41438317e+00,        -1.40958697e+00,  -1.40568907e+00,  -1.37983790e+00,        -1.36644514e+00,  -1.36161890e+00,  -1.36125241e+00,        -1.34975220e+00,  -1.33791219e+00,  -1.33749992e+00,        -1.31914006e+00,  -1.30914053e+00,  -1.30789423e+00,        -1.30643177e+00,  -1.30555575e+00,  -1.30344587e+00,        -1.29858964e+00,  -1.29636705e+00,  -1.29565226e+00,        -1.29375466e+00,  -1.29241563e+00,  -1.28463122e+00,        -1.27951444e+00,  -1.26367278e+00,  -1.26305822e+00,        -1.24254021e+00,  -1.24235221e+00,  -1.23535207e+00,        -1.22731165e+00,  -1.22483394e+00,  -1.22174351e+00,        -1.21754486e+00,  -1.20388509e+00,  -1.19763044e+00,        -1.19732461e+00,  -1.19430902e+00,  -1.18962347e+00,        -1.17012624e+00,  -1.16891609e+00,  -1.16808656e+00,        -1.15523104e+00,  -1.14368497e+00,  -1.13604132e+00,        -1.12312404e+00,  -1.11712820e+00,  -1.11608297e+00,        -1.11557044e+00,  -1.10751133e+00,  -1.10464469e+00,        -1.10126047e+00,  -1.09743761e+00,  -1.09619027e+00,        -1.09538839e+00,  -1.09527847e+00,  -1.09508649e+00,        -1.08441566e+00,  -1.08425566e+00,  -1.07535386e+00,        -1.07423788e+00,  -1.07383001e+00,  -1.07316898e+00,        -1.07141569e+00,  -1.06967540e+00,  -1.06642370e+00,        -1.04957042e+00,  -1.04659892e+00,  -1.03828769e+00,        -1.03559406e+00,  -1.03553927e+00,  -1.03547520e+00,        -1.02605389e+00,  -1.02505679e+00,  -1.02461126e+00,        -1.02285844e+00,  -1.02256579e+00,  -1.01857122e+00,        -1.01389186e+00,  -1.00399527e+00,  -1.00383838e+00,        -1.00293336e+00,  -9.98959259e-01,  -9.98690816e-01,        -9.97982364e-01,  -9.95634814e-01,  -9.86987201e-01,        -9.83082305e-01,  -9.76294878e-01,  -9.74573861e-01,        -9.71764059e-01,  -9.62078270e-01,  -9.59421728e-01,        -9.51539565e-01,  -9.50195502e-01,  -9.44768325e-01,        -9.42139719e-01,  -9.37097741e-01,  -9.34099647e-01,        -9.29478087e-01,  -9.21381882e-01,  -9.20150746e-01,        -9.20116272e-01,  -9.14924192e-01,  -9.05374148e-01,        -8.89069352e-01,  -8.86000599e-01,  -8.81615032e-01,        -8.81072960e-01,  -8.79241062e-01,  -8.79137950e-01,        -8.78502132e-01,  -8.73722962e-01,  -8.71343877e-01,        -8.69658191e-01,  -8.65315289e-01,  -8.64990735e-01,        -8.62798008e-01,  -8.55017326e-01,  -8.49858088e-01,        -8.48554884e-01,  -8.47944430e-01,  -8.42892072e-01,        -8.39409257e-01,  -8.32276804e-01,  -8.31261476e-01,        -8.23607389e-01,  -8.19954062e-01,  -8.19581054e-01,        -8.17666567e-01,  -8.15285262e-01,  -8.13205165e-01,        -8.04877356e-01,  -8.03808208e-01,  -7.97577549e-01,        -7.91123958e-01,  -7.85348275e-01,  -7.82382617e-01,        -7.81909361e-01,  -7.71081207e-01,  -7.69618776e-01,        -7.67665702e-01,  -7.66337169e-01,  -7.64329833e-01,        -7.63896325e-01,  -7.58751047e-01,  -7.58741069e-01,        -7.57078564e-01,  -7.53957786e-01,  -7.49925780e-01,        -7.48575341e-01,  -7.42818705e-01,  -7.42226722e-01,        -7.36305394e-01,  -7.35755695e-01,  -7.29694076e-01,        -7.24833409e-01,  -7.19942601e-01,  -7.18369929e-01,        -7.16526745e-01,  -7.07111178e-01,  -7.05494865e-01,        -7.04460166e-01,  -7.03909278e-01,  -7.00306245e-01,        -6.97572436e-01,  -6.90400928e-01,  -6.84749760e-01,        -6.77328428e-01,  -6.76298894e-01,  -6.73097672e-01,        -6.72000537e-01,  -6.71775672e-01,  -6.60177713e-01,        -6.51938036e-01,  -6.50659285e-01,  -6.50083550e-01,        -6.46790285e-01,  -6.46300183e-01,  -6.45020322e-01,        -6.42882889e-01,  -6.35941226e-01,  -6.31232215e-01,        -6.30154667e-01,  -6.29482107e-01,  -6.27436155e-01,        -6.22780005e-01,  -6.20918140e-01,  -6.17079086e-01,        -6.16556466e-01,  -6.15805312e-01,  -6.13495401e-01,        -6.12209274e-01,  -6.09539970e-01,  -6.07097746e-01,        -6.03437216e-01,  -5.97312581e-01,  -5.96390113e-01,        -5.83623922e-01,  -5.81725695e-01,  -5.76664161e-01,        -5.74869491e-01,  -5.71240627e-01,  -5.70155389e-01,        -5.70064171e-01,  -5.68909141e-01,  -5.66104228e-01,        -5.64239011e-01,  -5.59918362e-01,  -5.55869504e-01,        -5.55115124e-01,  -5.52994679e-01,  -5.52046682e-01,        -5.51763238e-01,  -5.42888598e-01,  -5.40551570e-01,        -5.36428014e-01,  -5.35638004e-01,  -5.27260715e-01,        -5.26669791e-01,  -5.20219920e-01,  -5.16502669e-01,        -5.16294725e-01,  -5.13066132e-01,  -5.07322069e-01,        -5.07063786e-01,  -5.05838238e-01,  -5.04287992e-01,        -5.02592526e-01,  -5.02056296e-01,  -4.93558209e-01,        -4.92376798e-01,  -4.91527356e-01,  -4.89515434e-01,        -4.85001683e-01,  -4.79026282e-01,  -4.75693571e-01,        -4.73794919e-01,  -4.62190712e-01,  -4.55454873e-01,        -4.53456269e-01,  -4.52548795e-01,  -4.52521286e-01,        -4.45776551e-01,  -4.43802858e-01,  -4.42559260e-01,        -4.41495362e-01,  -4.41283827e-01,  -4.35259709e-01,        -4.33336506e-01,  -4.26690483e-01,  -4.23014097e-01,        -4.22551925e-01,  -4.20587840e-01,  -4.20417358e-01,        -4.15178631e-01,  -4.13923204e-01,  -4.12730169e-01,        -4.12670633e-01,  -4.12228916e-01,  -4.11458203e-01,        -4.11133456e-01,  -4.09916035e-01,  -4.05264900e-01,        -4.00094962e-01,  -3.97535841e-01,  -3.92389790e-01,        -3.85377102e-01,  -3.85137145e-01,  -3.83612293e-01,        -3.78920895e-01,  -3.76511045e-01,  -3.73643936e-01,        -3.73518671e-01,  -3.73496020e-01,  -3.71031709e-01,        -3.68808382e-01,  -3.67902989e-01,  -3.67339572e-01,        -3.66089264e-01,  -3.65754163e-01,  -3.62554137e-01,        -3.62462271e-01,  -3.60755038e-01,  -3.50517473e-01,        -3.49352282e-01,  -3.47923116e-01,  -3.45146853e-01,        -3.41478693e-01,  -3.41206880e-01,  -3.32469974e-01,        -3.30378402e-01,  -3.28022566e-01,  -3.25363955e-01,        -3.24085262e-01,  -3.17318822e-01,  -3.16622933e-01,        -3.14479259e-01,  -3.07858769e-01,  -3.06446651e-01,        -3.00468573e-01,  -2.99432436e-01,  -2.98934869e-01,        -2.95175525e-01,  -2.91121939e-01,  -2.89585449e-01,        -2.88221400e-01,  -2.87785298e-01,  -2.86185801e-01,        -2.85474484e-01,  -2.85087616e-01,  -2.83671351e-01,        -2.79684313e-01,  -2.78727106e-01,  -2.76370997e-01,        -2.73292106e-01,  -2.71147183e-01,  -2.66708811e-01,        -2.63846514e-01,  -2.63145641e-01,  -2.62983039e-01,        -2.54284537e-01,  -2.51831038e-01,  -2.51623537e-01,        -2.50125521e-01,  -2.48267289e-01,  -2.46176905e-01,        -2.42246712e-01,  -2.41404691e-01,  -2.39796485e-01,        -2.39511875e-01,  -2.35026933e-01,  -2.25543138e-01,        -2.25354823e-01,  -2.22003769e-01,  -2.20943035e-01,        -2.18701799e-01,  -2.17532171e-01,  -2.15714779e-01,        -2.13753941e-01,  -2.09296599e-01,  -2.06422474e-01,        -2.05939198e-01,  -2.05569003e-01,  -2.02956587e-01,        -2.02272775e-01,  -2.01586866e-01,  -2.01186576e-01,        -1.99706846e-01,  -1.98218562e-01,  -1.95949841e-01,        -1.93527083e-01,  -1.93004617e-01,  -1.84901086e-01,        -1.84856059e-01,  -1.83676742e-01,  -1.78526188e-01,        -1.76831970e-01,  -1.74207625e-01,  -1.70502481e-01,        -1.65035573e-01,  -1.64260033e-01,  -1.63241852e-01,        -1.60776785e-01,  -1.60261839e-01,  -1.58409580e-01,        -1.50722676e-01,  -1.50651569e-01,  -1.47448733e-01,        -1.44296587e-01,  -1.43545778e-01,  -1.40727192e-01,        -1.38268927e-01,  -1.37545978e-01,  -1.36953781e-01,        -1.36777202e-01,  -1.35566959e-01,  -1.33075201e-01,        -1.31158064e-01,  -1.28897109e-01,  -1.20379394e-01,        -1.17721381e-01,  -1.17649103e-01,  -1.16550816e-01,        -1.15694665e-01,  -1.15313442e-01,  -1.09892765e-01,        -1.07633421e-01,  -1.06987898e-01,  -1.06590991e-01,        -1.02033802e-01,  -9.85101701e-02,  -9.44496464e-02,        -9.23652250e-02,  -9.23004674e-02,  -9.01233339e-02,        -8.54720188e-02,  -8.23344469e-02,  -8.07123341e-02,        -8.00790868e-02,  -7.80445611e-02,  -7.75014639e-02,        -7.59132127e-02,  -6.77798779e-02,  -6.46576688e-02,        -6.20123741e-02,  -5.48160764e-02,  -5.37755399e-02,        -5.25433533e-02,  -4.96375807e-02,  -4.84555571e-02,        -4.68512771e-02,  -4.49288708e-02,  -4.36948838e-02,        -4.28416000e-02,  -4.17439932e-02,  -4.01092546e-02,        -3.96515283e-02,  -3.95134590e-02,  -3.78218301e-02,        -3.49705836e-02,  -3.34295354e-02,  -3.03984690e-02,        -2.83698356e-02,  -1.59560043e-02,  -6.90971207e-03,        -4.10276511e-03,  -2.62012488e-03,   1.52766021e-03,         2.30387930e-03,   2.60165886e-03,   1.76278569e-02,         2.77800528e-02,   2.93187793e-02,   3.06136521e-02,         3.32049369e-02,   3.87335918e-02,   4.00796966e-02,         4.00828912e-02,   4.45939368e-02,   4.67199231e-02,         4.82380297e-02,   5.13702638e-02,   5.15819054e-02,         5.57402777e-02,   5.58094588e-02,   5.63972960e-02,         5.85908043e-02,   5.93539850e-02,   6.20743439e-02,         6.98583184e-02,   7.18075886e-02,   7.18822376e-02,         7.48870799e-02,   7.65223273e-02,   7.68375832e-02,         7.90422964e-02,   8.02216626e-02,   8.60626647e-02,         8.77264112e-02,   9.02639656e-02,   9.27599746e-02,         9.59576050e-02,   9.98835960e-02,   1.00166297e-01,         1.01343431e-01,   1.02138794e-01,   1.04609043e-01,         1.05971628e-01,   1.06805842e-01,   1.10139938e-01,         1.12662756e-01,   1.15481222e-01,   1.16074429e-01,         1.16318620e-01,   1.20096585e-01,   1.22693903e-01,         1.25032503e-01,   1.37583286e-01,   1.38473158e-01,         1.41680635e-01,   1.52019256e-01,   1.54649820e-01,         1.60163104e-01,   1.64056923e-01,   1.68018169e-01,         1.70454463e-01,   1.71926921e-01,   1.76898827e-01,         1.78989720e-01,   1.79444473e-01,   1.83217524e-01,         1.85975920e-01,   1.86677087e-01,   1.92866221e-01,         1.96902803e-01,   2.01571885e-01,   2.04795457e-01,         2.06707305e-01,   2.14238918e-01,   2.15906180e-01,         2.18861952e-01,   2.19423758e-01,   2.20312996e-01,         2.24960231e-01,   2.30855855e-01,   2.30953528e-01,         2.32423085e-01,   2.33393493e-01,   2.36340512e-01,         2.41489410e-01,   2.42366172e-01,   2.45200385e-01,         2.45942040e-01,   2.46376877e-01,   2.59249674e-01,         2.60174654e-01,   2.63765884e-01,   2.65277845e-01,         2.66920521e-01,   2.73040459e-01,   2.73982228e-01,         2.77709585e-01,   2.77999866e-01,   2.78023708e-01,         2.80639131e-01,   2.81294166e-01,   2.85941486e-01,         2.88132889e-01,   2.89079018e-01,   2.91987170e-01,         2.94523428e-01,   2.96905233e-01,   3.03116517e-01,         3.05423605e-01,   3.05461069e-01,   3.06411877e-01,         3.08275009e-01,   3.09691630e-01,   3.13192270e-01,         3.17623641e-01,   3.19747502e-01,   3.24430552e-01,         3.26181801e-01,   3.26935321e-01,   3.27942827e-01,         3.28737025e-01,   3.33197414e-01,   3.35785818e-01,         3.55248283e-01,   3.58030474e-01,   3.58178086e-01,         3.61676996e-01,   3.64704429e-01,   3.69059903e-01,         3.70712569e-01,   3.70840389e-01,   3.74441844e-01,         3.81142070e-01,   3.85253255e-01,   3.85624711e-01,         3.86932510e-01,   3.87310449e-01,   3.87629205e-01,         3.91854566e-01,   3.93626248e-01,   3.95720178e-01,         4.02460481e-01,   4.07792832e-01,   4.08675356e-01,         4.11774875e-01,   4.16234335e-01,   4.18034074e-01,         4.18381873e-01,   4.21533227e-01,   4.28860075e-01,         4.29164391e-01,   4.29686534e-01,   4.31617112e-01,         4.36816533e-01,   4.38357865e-01,   4.39163246e-01,         4.46426084e-01,   4.46711964e-01,   4.50180998e-01,         4.51143877e-01,   4.52891211e-01,   4.54212658e-01,         4.56069524e-01,   4.56092207e-01,   4.58283561e-01,         4.60381797e-01,   4.64947689e-01,   4.68605964e-01,         4.68942506e-01,   4.73060825e-01,   4.73377381e-01,         4.74137978e-01,   4.76633579e-01,   4.77239612e-01,         4.77776756e-01,   4.79183170e-01,   4.80101508e-01,         4.83269792e-01,   4.95950421e-01,   4.96317724e-01,         4.98302392e-01,   5.04217603e-01,   5.04242992e-01,         5.04868981e-01,   5.05101048e-01,   5.06926475e-01,         5.07785645e-01,   5.08845358e-01,   5.09592375e-01,         5.10213090e-01,   5.12238318e-01,   5.13635860e-01,         5.17243235e-01,   5.18700044e-01,   5.24084018e-01,         5.25312635e-01,   5.26386026e-01,   5.34717244e-01,         5.35204369e-01,   5.41390808e-01,   5.46297779e-01,         5.46933131e-01,   5.50735947e-01,   5.52482636e-01,         5.52662259e-01,   5.55435195e-01,   5.57333644e-01,         5.63186398e-01,   5.63379670e-01,   5.64607181e-01,         5.72737024e-01,   5.79325252e-01,   5.84332356e-01,         5.85691252e-01,   5.88077675e-01,   5.89022420e-01,         5.90810672e-01,   5.93136772e-01,   5.94498059e-01,         5.95621287e-01,   5.97346136e-01,   5.99860797e-01,         5.99873026e-01,   6.00669236e-01,   6.08138667e-01,         6.08589006e-01,   6.11301651e-01,   6.12272055e-01,         6.13909849e-01,   6.15614844e-01,   6.26286209e-01,         6.27578731e-01,   6.34570371e-01,   6.35654675e-01,         6.36156489e-01,   6.37574637e-01,   6.37611896e-01,         6.38096643e-01,   6.38507685e-01,   6.42934574e-01,         6.44898877e-01,   6.51445203e-01,   6.53767314e-01,         6.54135439e-01,   6.54396768e-01,   6.56078944e-01,         6.67123477e-01,   6.71536531e-01,   6.71943848e-01,         6.73645709e-01,   6.74586551e-01,   6.76562467e-01,         6.79195898e-01,   6.83567363e-01,   6.87987373e-01,         6.88962441e-01,   6.91376530e-01,   6.94300228e-01,         7.01917247e-01,   7.05022590e-01,   7.05503985e-01,         7.07366058e-01,   7.08211537e-01,   7.09682802e-01,         7.10658007e-01,   7.12228710e-01,   7.12487418e-01,         7.18508536e-01,   7.34585593e-01,   7.36091203e-01,         7.43918761e-01,   7.44214974e-01,   7.47164301e-01,         7.47824426e-01,   7.51168587e-01,   7.54451077e-01,         7.55777137e-01,   7.59312411e-01,   7.63555265e-01,         7.64804872e-01,   7.65809782e-01,   7.67686032e-01,         7.69962252e-01,   7.72177553e-01,   7.75200182e-01,         7.83260549e-01,   7.83897854e-01,   7.84752546e-01,         7.88161278e-01,   7.90809203e-01,   7.94222769e-01,         7.99347504e-01,   8.01482296e-01,   8.05430601e-01,         8.06747475e-01,   8.08349778e-01,   8.10938994e-01,         8.18329803e-01,   8.19150280e-01,   8.21352154e-01,         8.21886642e-01,   8.23005922e-01,   8.26181387e-01,         8.26296605e-01,   8.29609625e-01,   8.32750116e-01,         8.38116551e-01,   8.38451089e-01,   8.40063741e-01,         8.41889515e-01,   8.47250511e-01,   8.53041771e-01,         8.53344407e-01,   8.60067684e-01,   8.70655019e-01,         8.76815976e-01,   8.83958915e-01,   8.84647908e-01,         8.87209193e-01,   8.88721122e-01,   8.89945174e-01,         8.91422069e-01,   8.91756890e-01,   8.96430464e-01,         9.04230830e-01,   9.08772762e-01,   9.12915294e-01,         9.13128479e-01,   9.20857768e-01,   9.28348111e-01,         9.29956449e-01,   9.34937718e-01,   9.42107894e-01,         9.42447958e-01,   9.42762179e-01,   9.45408299e-01,         9.65344268e-01,   9.71280617e-01,   9.71713143e-01,         9.77956402e-01,   9.91887215e-01,   9.93886263e-01,         9.95226932e-01,   9.95681306e-01,   9.96644520e-01,         1.00062710e+00,   1.00161039e+00,   1.00906336e+00,         1.00943567e+00,   1.01629349e+00,   1.02337725e+00,         1.02544637e+00,   1.02977442e+00,   1.03221269e+00,         1.03891833e+00,   1.04142800e+00,   1.04988398e+00,         1.05225261e+00,   1.05259456e+00,   1.05658663e+00,         1.06515569e+00,   1.07225371e+00,   1.08017932e+00,         1.08935266e+00,   1.10138735e+00,   1.10498213e+00,         1.10499687e+00,   1.11298762e+00,   1.11321027e+00,         1.11773694e+00,   1.12118828e+00,   1.12587328e+00,         1.12681515e+00,   1.12883789e+00,   1.13289173e+00,         1.13581795e+00,   1.14311089e+00,   1.14698670e+00,         1.14860905e+00,   1.15713907e+00,   1.15941259e+00,         1.16411387e+00,   1.18742143e+00,   1.18772562e+00,         1.20381095e+00,   1.21489223e+00,   1.21729471e+00,         1.22645082e+00,   1.23349057e+00,   1.23968093e+00,         1.24306366e+00,   1.24699135e+00,   1.25310094e+00,         1.25403014e+00,   1.25426396e+00,   1.26647412e+00,         1.27020732e+00,   1.27404623e+00,   1.27497440e+00,         1.28683057e+00,   1.29723559e+00,   1.29918978e+00,         1.29997574e+00,   1.32318818e+00,   1.33038970e+00,         1.33599123e+00,   1.33917120e+00,   1.33923734e+00,         1.34021524e+00,   1.34709089e+00,   1.35483138e+00,         1.35708015e+00,   1.35718030e+00,   1.37107061e+00,         1.37124898e+00,   1.39129482e+00,   1.39223975e+00,         1.39401477e+00,   1.40693554e+00,   1.41305936e+00,         1.42070619e+00,   1.45294528e+00,   1.46382285e+00,         1.47457031e+00,   1.47753817e+00,   1.48772859e+00,         1.49253034e+00,   1.49934225e+00,   1.50928900e+00,         1.52961572e+00,   1.52986261e+00,   1.56365845e+00,         1.57983856e+00,   1.59026183e+00,   1.59565568e+00,         1.60142692e+00,   1.61162005e+00,   1.63772040e+00,         1.64487334e+00,   1.66851515e+00,   1.68202235e+00,         1.68310854e+00,   1.68373641e+00,   1.69173757e+00,         1.71118719e+00,   1.72073518e+00,   1.73009118e+00,         1.74389518e+00,   1.74773435e+00,   1.75435546e+00,         1.75565456e+00,   1.76316739e+00,   1.78255471e+00,         1.78590219e+00,   1.78899659e+00,   1.79327582e+00,         1.81984208e+00,   1.82812728e+00,   1.83508063e+00,         1.83552179e+00,   1.85945759e+00,   1.86093388e+00,         1.86307686e+00,   1.86752481e+00,   1.87803050e+00,         1.87905873e+00,   1.88014423e+00,   1.89459817e+00,         1.89995276e+00,   1.90399462e+00,   1.90617324e+00,         1.90756263e+00,   1.92813075e+00,   1.92969789e+00,         1.95224043e+00,   1.96220438e+00,   1.96477208e+00,         1.97236544e+00,   2.04427084e+00,   2.05297039e+00,         2.05511306e+00,   2.07505527e+00,   2.10807892e+00,         2.10897643e+00,   2.14252697e+00,   2.17120786e+00,         2.18356276e+00,   2.20202623e+00,   2.20321044e+00,         2.26011463e+00,   2.28667866e+00,   2.34907293e+00,         2.36049154e+00,   2.36243485e+00,   2.42856432e+00,         2.45515894e+00,   2.53091226e+00,   2.55885939e+00,         2.57331825e+00,   2.58950812e+00,   2.60262219e+00,         2.66302707e+00,   2.76920687e+00,   2.88631116e+00,         3.45176404e+00])
large_arr[int(0.05 * len(large_arr))]
-1.5292160926263139

唯一化以及其他的集合逻辑

names = np.array(['Bob', 'Joe', 'Will','Bob','Will','Joe','Joe'])np.unique(names)
array(['Bob', 'Joe', 'Will'],       dtype='<U4')
ints = np.array([1,3,4,3,5,3,4,5,6,3])np.unique(ints)
array([1, 3, 4, 5, 6])
ints
array([1, 3, 4, 3, 5, 3, 4, 5, 6, 3])
set(ints)
{1, 3, 4, 5, 6}
sorted(set(ints))
[1, 3, 4, 5, 6]
values = np.array([6,0,0,3,2,5,6])
np.in1d(values,[2,3,4])
array([False, False, False,  True,  True, False, False], dtype=bool)

用于数组的文件输入输出

arr = np.arange(10)np.save('some_array', arr)
np.load('some_array.npy')
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.savez('array_archive.npz',a =arr, b= arr)
arch = np.load('array_archive.npz')
arch['b']
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
arr = np.loadtxt('D:\pytest\pydata-book-master\ch04\\array_ex.txt', delimiter = ',')
arr
array([[ 0.580052,  0.18673 ,  1.040717,  1.134411],       [ 0.194163, -0.636917, -0.938659,  0.124094],       [-0.12641 ,  0.268607, -0.695724,  0.047428],       [-1.484413,  0.004176, -0.744203,  0.005487],       [ 2.302869,  0.200131,  1.670238, -1.88109 ],       [-0.19323 ,  1.047233,  0.482803,  0.960334]])

线性代数

x = np.array([[1,2,3],[4,5,6]])y = np.array([[6,3],[-1,34],[4,5]])
x
array([[1, 2, 3],       [4, 5, 6]])
y
array([[ 6,  3],       [-1, 34],       [ 4,  5]])
z = np.dot(x,y)
z
array([[ 16,  86],       [ 43, 212]])
np.dot(x, np.ones(3))
array([  6.,  15.])
from numpy.linalg import inv,qrX = np.random.randn(5,5)mat = X.T.dot(X)inv(mat)
array([[ 2.432557  ,  2.19140476, -0.08411948,  2.35185197,  0.81360466],       [ 2.19140476,  4.3248481 , -1.74727017,  3.07199859,  0.94147305],       [-0.08411948, -1.74727017,  1.51194781, -0.60697159, -0.13637347],       [ 2.35185197,  3.07199859, -0.60697159,  3.58547061,  1.15508506],       [ 0.81360466,  0.94147305, -0.13637347,  1.15508506,  0.47517617]])
mat.dot(inv(mat))
array([[  1.00000000e+00,   0.00000000e+00,   1.11022302e-16,         -1.11022302e-16,   5.55111512e-17],       [ -5.55111512e-17,   1.00000000e+00,  -5.27355937e-16,          0.00000000e+00,  -1.11022302e-16],       [  3.05311332e-16,  -1.08246745e-15,   1.00000000e+00,         -2.22044605e-16,  -4.99600361e-16],       [  0.00000000e+00,   1.33226763e-15,  -2.22044605e-16,          1.00000000e+00,   2.22044605e-16],       [  3.55271368e-15,   1.77635684e-15,  -2.22044605e-16,          1.77635684e-15,   1.00000000e+00]])
q,r = qr(mat)
r
array([[-3.21230545,  3.76014964,  4.23091795, -1.5152842 ,  3.49612957],       [ 0.        , -1.91632912, -1.84146807,  1.35863595,  0.43935052],       [ 0.        ,  0.        , -0.80924709, -2.60438829,  7.28309654],       [ 0.        ,  0.        ,  0.        , -2.33505011,  7.15303881],       [ 0.        ,  0.        ,  0.        ,  0.        ,  0.56551031]])
samples = np.random.normal(size = (4,4))
samples
array([[-0.02572043, -0.50915883,  0.70107716, -0.24659031],       [-0.36765102, -1.20889873,  0.077988  ,  0.06286378],       [ 0.66779473,  0.81195832,  1.00205546,  0.37107217],       [ 2.49153879,  1.18781841,  1.13041669,  1.31902047]])
from random import normalvariateN = 1000000%timeit samples = [normalvariate(0,1) for _ in range(N)]
1 loop, best of 3: 1.58 s per loop
%timeit np.random.normal(size = N)
10 loops, best of 3: 43.2 ms per loop
import randompostion = 0walk = [postion]steps = 100for i in range(steps):    step = 1 if random.randint(0,1) else -1    postion += step    walk.append(postion)
import matplotlib.pyplot as plt plt.plot(walk)
[<matplotlib.lines.Line2D at 0x10ad0a90>]

png

nsteps = 1000draws = np.random.randint(0, 2, size = nsteps)print(draws)steps = np.where(draws > 0, 1, -1)print(steps)walk = steps.cumsum()
[0 1 1 0 1 0 1 0 1 1 1 0 0 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 0 0 1 1 0 0 1 0 0 0 1 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 1 1 1 0 0 1 1 1 0 1 1 0 1 1 0 0 1 1 1 1 0 1 1 1 0 1 0 0 1 1 0 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 1 1 0 1 0 1 1 1 1 0 0 1 1 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 1 1 1 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 0 1 0 1 1 1 0 1 0 1 0 1 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 0 1 0 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 1 1 1 0 0 1 1 1 1 0 1 0 1 1 0 0 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 1 0 1 0 0 1 1 1 1 1 0 0 1 0 1 1 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 1 1 0 0 1 1 1 1 1 0 1 1 0 0 0 0 0 1 1 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 0 0 1 0 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 1 1 1 1 1 0 1 0 1 0 1 1 1 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 1 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 1 1 0 1 1 1 1 1 0 1 0 0 0 0 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 1 1 0 1 1 1 1 0 1 1 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 1 0 0 1 1 1 0 1 1 0 1 0 1 1 1 1 0 1 1 0 1 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 1 0 1 1 0 0 1 0 0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 0 1 1 1 1 1 1 1 0 1 0 0 1 0 1 0 0 1 1 1 1 1 1 1 0 1 1 0 1 1 0 0 1 0 1 1 0 1 1 0 1 0 0 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 1 0 0][-1  1  1 -1  1 -1  1 -1  1  1  1 -1 -1  1  1  1 -1  1  1 -1  1  1 -1  1  1 -1  1  1 -1  1  1  1  1 -1 -1  1  1 -1 -1  1 -1 -1 -1  1  1  1 -1  1  1 -1  1 -1  1  1 -1  1 -1  1 -1 -1  1  1  1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1  1  1  1 -1 -1  1 -1  1  1  1  1 -1 -1  1  1  1 -1  1  1 -1  1  1 -1 -1  1  1  1  1 -1  1  1  1 -1  1 -1 -1  1  1 -1  1  1  1 -1 -1 -1  1  1  1  1  1  1  1 -1 -1  1  1  1 -1 -1  1 -1  1 -1 -1 -1 -1 -1  1  1 -1 -1 -1  1  1  1  1 -1 -1 -1 -1 -1 -1 -1  1  1  1 -1  1  1  1 -1  1 -1  1  1  1  1 -1 -1  1  1 -1  1 -1 -1 -1  1 -1 -1  1  1 -1 -1  1 -1 -1 -1 -1 -1  1  1  1  1 -1  1  1 -1  1  1 -1  1  1  1  1 -1 -1 -1 -1 -1 -1 -1  1  1  1  1 -1  1 -1 -1 -1  1  1 -1 -1 -1 -1 -1 -1  1  1 -1 -1  1 -1  1 -1  1 -1 -1 -1  1  1  1 -1 -1  1 -1  1 -1 -1  1  1 -1 -1 -1  1  1  1  1 -1  1 -1  1  1  1 -1  1 -1  1 -1  1 -1 -1 -1 -1  1 -1  1  1 -1  1 -1  1 -1  1 -1 -1 -1 -1 -1 -1 -1 -1 -1  1 -1 -1 -1 -1 -1  1  1 -1 -1  1 -1 -1  1  1 -1  1  1 -1  1  1 -1  1  1  1 -1  1  1 -1 -1  1 -1  1 -1 -1 -1  1 -1  1 -1  1 -1  1  1 -1  1 -1  1  1  1  1 -1 -1  1  1  1  1 -1  1 -1  1  1 -1 -1  1 -1  1  1 -1  1 -1 -1 -1  1 -1 -1  1 -1 -1  1  1 -1 -1  1 -1 -1  1  1  1 -1  1 -1 -1  1 -1 -1 -1  1  1  1 -1  1 -1 -1 -1  1  1 -1  1  1 -1 -1  1 -1 -1  1 -1 -1 -1 -1  1 -1  1 -1  1  1  1 -1  1 -1  1  1  1  1 -1  1  1 -1  1 -1 -1  1 -1  1  1 -1  1 -1  1  1  1  1  1  1 -1 -1 -1 -1 -1 -1  1 -1 -1  1 -1 -1  1  1 -1  1 -1  1  1 -1 -1 -1 -1 -1  1 -1 -1  1  1 -1 -1 -1  1 -1 -1  1 -1  1 -1 -1  1  1  1  1  1 -1 -1  1 -1  1  1  1 -1 -1 -1  1 -1  1 -1 -1 -1 -1  1 -1 -1  1 -1  1 -1 -1  1  1  1 -1 -1  1  1  1  1  1 -1  1  1 -1 -1 -1 -1 -1  1  1 -1 -1  1 -1 -1  1 -1  1 -1  1  1 -1  1 -1 -1  1  1 -1  1 -1  1 -1 -1 -1 -1  1 -1 -1 -1 -1 -1 -1 -1 -1 -1  1  1  1 -1 -1 -1  1  1 -1 -1  1 -1  1  1 -1  1 -1  1  1  1 -1 -1 -1 -1 -1 -1 -1 -1  1 -1  1 -1  1 -1 -1  1  1  1  1  1  1  1 -1  1 -1  1 -1  1  1  1 -1  1  1 -1 -1 -1 -1 -1 -1  1 -1 -1  1  1 -1 -1 -1  1  1  1 -1 -1 -1  1 -1 -1 -1  1 -1 -1 -1 -1  1  1  1  1  1  1  1 -1  1 -1  1  1  1  1  1 -1  1 -1  1  1 -1 -1  1  1  1 -1 -1  1 -1  1 -1  1 -1 -1  1 -1 -1  1  1  1 -1  1  1  1  1  1 -1  1 -1 -1 -1 -1  1 -1  1 -1  1  1 -1  1 -1 -1  1 -1 -1 -1  1  1  1 -1  1 -1 -1 -1  1 -1 -1 -1 -1 -1  1  1 -1 -1  1  1  1 -1 -1 -1 -1  1  1 -1  1  1  1  1 -1  1  1  1 -1 -1 -1  1 -1 -1  1 -1  1 -1 -1  1 -1  1 -1 -1 -1  1 -1 -1 -1  1 -1 -1  1  1 -1  1 -1 -1 -1 -1 -1  1 -1 -1  1 -1 -1  1  1 -1 -1 -1 -1  1  1 -1 -1 -1  1 -1  1  1 -1 -1 -1 -1  1 -1 -1 -1 -1  1  1  1  1  1  1  1  1  1 -1  1 -1 -1 -1 -1 -1  1 -1 -1  1  1  1 -1  1  1 -1  1 -1  1  1  1  1 -1  1  1 -1  1 -1  1 -1  1  1  1 -1  1 -1 -1  1 -1  1  1 -1  1 -1  1  1 -1 -1  1 -1 -1  1  1 -1  1 -1  1 -1 -1 -1  1 -1  1 -1  1 -1  1  1  1  1  1  1  1 -1  1 -1 -1  1 -1  1 -1 -1  1  1  1  1  1  1  1 -1  1  1 -1  1  1 -1 -1  1 -1  1  1 -1  1  1 -1  1 -1 -1  1  1  1  1 -1 -1  1 -1 -1 -1 -1  1 -1 -1 -1 -1 -1  1  1  1 -1  1  1 -1 -1  1  1 -1 -1  1 -1  1  1 -1 -1 -1 -1  1 -1 -1  1 -1 -1  1 -1 -1  1 -1 -1  1  1 -1 -1  1 -1 -1]
walk = steps.cumsum()print(walk)plt.plot(walk)
[ -1   0   1   0   1   0   1   0   1   2   3   2   1   2   3   4   3   4   5   4   5   6   5   6   7   6   7   8   7   8   9  10  11  10   9  10  11  10   9  10   9   8   7   8   9  10   9  10  11  10  11  10  11  12  11  12  11  12  11  10  11  12  13  12  11  10   9   8   7   6   5   4   3   2   1   0   1   2   3   2   1   2   1   2   3   4   5   4   3   4   5   6   5   6   7   6   7   8   7   6   7   8   9  10   9  10  11  12  11  12  11  10  11  12  11  12  13  14  13  12  11  12  13  14  15  16  17  18  17  16  17  18  19  18  17  18  17  18  17  16  15  14  13  14  15  14  13  12  13  14  15  16  15  14  13  12  11  10   9  10  11  12  11  12  13  14  13  14  13  14  15  16  17  16  15  16  17  16  17  16  15  14  15  14  13  14  15  14  13  14  13  12  11  10   9  10  11  12  13  12  13  14  13  14  15  14  15  16  17  18  17  16  15  14  13  12  11  12  13  14  15  14  15  14  13  12  13  14  13  12  11  10   9   8   9  10   9   8   9   8   9   8   9   8   7   6   7   8   9   8   7   8   7   8   7   6   7   8   7   6   5   6   7   8   9   8   9   8   9  10  11  10  11  10  11  10  11  10   9   8   7   8   7   8   9   8   9   8   9   8   9   8   7   6   5   4   3   2   1   0   1   0  -1  -2  -3  -4  -3  -2  -3  -4  -3  -4  -5  -4  -3  -4  -3  -2  -3  -2  -1  -2  -1   0   1   0   1   2   1   0   1   0   1   0  -1  -2  -1  -2  -1  -2  -1  -2  -1   0  -1   0  -1   0   1   2   3   2   1   2   3   4   5   4   5   4   5   6   5   4   5   4   5   6   5   6   5   4   3   4   3   2   3   2   1   2   3   2   1   2   1   0   1   2   3   2   3   2   1   2   1   0  -1   0   1   2   1   2   1   0  -1   0   1   0   1   2   1   0   1   0  -1   0  -1  -2  -3  -4  -3  -4  -3  -4  -3  -2  -1  -2  -1  -2  -1   0   1   2   1   2   3   2   3   2   1   2   1   2   3   2   3   2   3   4   5   6   7   8   7   6   5   4   3   2   3   2   1   2   1   0   1   2   1   2   1   2   3   2   1   0  -1  -2  -1  -2  -3  -2  -1  -2  -3  -4  -3  -4  -5  -4  -5  -4  -5  -6  -5  -4  -3  -2  -1  -2  -3  -2  -3  -2  -1   0  -1  -2  -3  -2  -3  -2  -3  -4  -5  -6  -5  -6  -7  -6  -7  -6  -7  -8  -7  -6  -5  -6  -7  -6  -5  -4  -3  -2  -3  -2  -1  -2  -3  -4  -5  -6  -5  -4  -5  -6  -5  -6  -7  -6  -7  -6  -7  -6  -5  -6  -5  -6  -7  -6  -5  -6  -5  -6  -5  -6  -7  -8  -9  -8  -9 -10 -11 -12 -13 -14 -15 -16 -17 -16 -15 -14 -15 -16 -17 -16 -15 -16 -17 -16 -17 -16 -15 -16 -15 -16 -15 -14 -13 -14 -15 -16 -17 -18 -19 -20 -21 -20 -21 -20 -21 -20 -21 -22 -21 -20 -19 -18 -17 -16 -15 -16 -15 -16 -15 -16 -15 -14 -13 -14 -13 -12 -13 -14 -15 -16 -17 -18 -17 -18 -19 -18 -17 -18 -19 -20 -19 -18 -17 -18 -19 -20 -19 -20 -21 -22 -21 -22 -23 -24 -25 -24 -23 -22 -21 -20 -19 -18 -19 -18 -19 -18 -17 -16 -15 -14 -15 -14 -15 -14 -13 -14 -15 -14 -13 -12 -13 -14 -13 -14 -13 -14 -13 -14 -15 -14 -15 -16 -15 -14 -13 -14 -13 -12 -11 -10  -9 -10  -9 -10 -11 -12 -13 -12 -13 -12 -13 -12 -11 -12 -11 -12 -13 -12 -13 -14 -15 -14 -13 -12 -13 -12 -13 -14 -15 -14 -15 -16 -17 -18 -19 -18 -17 -18 -19 -18 -17 -16 -17 -18 -19 -20 -19 -18 -19 -18 -17 -16 -15 -16 -15 -14 -13 -14 -15 -16 -15 -16 -17 -16 -17 -16 -17 -18 -17 -18 -17 -18 -19 -20 -19 -20 -21 -22 -21 -22 -23 -22 -21 -22 -21 -22 -23 -24 -25 -26 -25 -26 -27 -26 -27 -28 -27 -26 -27 -28 -29 -30 -29 -28 -29 -30 -31 -30 -31 -30 -29 -30 -31 -32 -33 -32 -33 -34 -35 -36 -35 -34 -33 -32 -31 -30 -29 -28 -27 -28 -27 -28 -29 -30 -31 -32 -31 -32 -33 -32 -31 -30 -31 -30 -29 -30 -29 -30 -29 -28 -27 -26 -27 -26 -25 -26 -25 -26 -25 -26 -25 -24 -23 -24 -23 -24 -25 -24 -25 -24 -23 -24 -23 -24 -23 -22 -23 -24 -23 -24 -25 -24 -23 -24 -23 -24 -23 -24 -25 -26 -25 -26 -25 -26 -25 -26 -25 -24 -23 -22 -21 -20 -19 -20 -19 -20 -21 -20 -21 -20 -21 -22 -21 -20 -19 -18 -17 -16 -15 -16 -15 -14 -15 -14 -13 -14 -15 -14 -15 -14 -13 -14 -13 -12 -13 -12 -13 -14 -13 -12 -11 -10 -11 -12 -11 -12 -13 -14 -15 -14 -15 -16 -17 -18 -19 -18 -17 -16 -17 -16 -15 -16 -17 -16 -15 -16 -17 -16 -17 -16 -15 -16 -17 -18 -19 -18 -19 -20 -19 -20 -21 -20 -21 -22 -21 -22 -23 -22 -21 -22 -23 -22 -23 -24][<matplotlib.lines.Line2D at 0x10c090b8>]

png

walk.min()
-36
walk.max()
19
(np.abs(walk) > 10).argmax()
32
nwalks = 5000nsteps =1000draws = np.random.randint(0, 2, size =(nwalks, nsteps))steps = np.where(draws > 0, 1, -1)walks = steps.cumsum(1)
walks
array([[ -1,   0,   1, ..., -62, -63, -62],       [  1,   0,   1, ...,  20,  21,  22],       [  1,   0,   1, ..., -12, -11, -12],       ...,        [  1,   2,   3, ..., -34, -33, -34],       [ -1,  -2,  -3, ...,   4,   3,   2],       [ -1,  -2,  -1, ..., -10, -11, -10]], dtype=int32)
walks.max()
122
walk.min()
-36
hits30 = (np.abs(walks) > 30).any(1)hits30
array([ True,  True,  True, ...,  True, False, False], dtype=bool)
hits30.sum()
3269
crossing_times = (np.abs(walks[hits30] >= 30).argmax(1))crossing_times.mean()
256.13979810339555
原创粉丝点击