data1 = [6, 7.5, 8, 0, 1 ]
import numpy as np
arr1 = 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[:] = 5
arr_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] =42
arr3d
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 arr2d
NameError: 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] = i
arr
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 plt
z = 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>
为什么画图前面要加一句%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>
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,qr
X = 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 normalvariate
N = 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 random
postion = 0
walk = [postion]
steps = 100
for 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>]
nsteps = 1000
draws = 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>]
walk.min()
-36
walk.max()
19
(np.abs(walk) > 10).argmax()
32
nwalks = 5000
nsteps =1000
draws = 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