numpy 基础操作
Numpy 基础操作¶
以numpy的基本数据例子来学习numpy基本数据处理方法
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。主要内容有:
- 创建数组
- 数组维度转换
- 数据选区和切片
- 数组数据计算
- 随机数
- 数据合并
- 数据统计计算
import numpy as np
创建一维数组¶
In [2]:data = np.arange(15) dataOut[2]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
reshape进行维度转换¶
- data.reshape(rows, cols), 转换的行数,列数。
- -1表示使用默认计算,reshape(3, -1),表示三行,列数根据数据自动计算
- reshape(-1, 5)表示5列,行数根据计算得出
data = data.reshape(3,5) dataOut[3]:
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
np.newaxis增加维度¶
为数据增加维度,下面例子展示增加了一个维度
数据变为三行,一列,垂直五的数据
In [4]:d = data[:, np.newaxis] dOut[4]:
array([[[ 0, 1, 2, 3, 4]],
[[ 5, 6, 7, 8, 9]],
[[10, 11, 12, 13, 14]]]) In [5]:
d.shapeOut[5]:
(3, 1, 5)In [6]:
data.shapeOut[6]:
(3, 5)
读取逗号分割数据¶
In [7]:url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data' iris_2d = np.genfromtxt(url, delimiter=',', dtype='object') iris_2d[:10]Out[7]:
array([[b'5.1', b'3.5', b'1.4', b'0.2', b'Iris-setosa'],
[b'4.9', b'3.0', b'1.4', b'0.2', b'Iris-setosa'],
[b'4.7', b'3.2', b'1.3', b'0.2', b'Iris-setosa'],
[b'4.6', b'3.1', b'1.5', b'0.2', b'Iris-setosa'],
[b'5.0', b'3.6', b'1.4', b'0.2', b'Iris-setosa'],
[b'5.4', b'3.9', b'1.7', b'0.4', b'Iris-setosa'],
[b'4.6', b'3.4', b'1.4', b'0.3', b'Iris-setosa'],
[b'5.0', b'3.4', b'1.5', b'0.2', b'Iris-setosa'],
[b'4.4', b'2.9', b'1.4', b'0.2', b'Iris-setosa'],
[b'4.9', b'3.1', b'1.5', b'0.1', b'Iris-setosa']], dtype=object)
数据切片和类型转换¶
使用[m, n]来对数据取值或者切片
- [:, n] 取列数据
- [m, :] 取行数据
- [m:n, m:n] 数据切片
astype来指定数据类型
In [8]:names = ('sepallength', 'sepalwidth', 'petallength', 'petalwidth', 'species') sepallength = iris_2d[:, 0].astype('float') petallength = iris_2d[:, 2].astype('float') sepallengthOut[8]:
array([5.1, 4.9, 4.7, 4.6, 5. , 5.4, 4.6, 5. , 4.4, 4.9, 5.4, 4.8, 4.8,
4.3, 5.8, 5.7, 5.4, 5.1, 5.7, 5.1, 5.4, 5.1, 4.6, 5.1, 4.8, 5. ,
5. , 5.2, 5.2, 4.7, 4.8, 5.4, 5.2, 5.5, 4.9, 5. , 5.5, 4.9, 4.4,
5.1, 5. , 4.5, 4.4, 5. , 5.1, 4.8, 5.1, 4.6, 5.3, 5. , 7. , 6.4,
6.9, 5.5, 6.5, 5.7, 6.3, 4.9, 6.6, 5.2, 5. , 5.9, 6. , 6.1, 5.6,
6.7, 5.6, 5.8, 6.2, 5.6, 5.9, 6.1, 6.3, 6.1, 6.4, 6.6, 6.8, 6.7,
6. , 5.7, 5.5, 5.5, 5.8, 6. , 5.4, 6. , 6.7, 6.3, 5.6, 5.5, 5.5,
6.1, 5.8, 5. , 5.6, 5.7, 5.7, 6.2, 5.1, 5.7, 6.3, 5.8, 7.1, 6.3,
6.5, 7.6, 4.9, 7.3, 6.7, 7.2, 6.5, 6.4, 6.8, 5.7, 5.8, 6.4, 6.5,
7.7, 7.7, 6. , 6.9, 5.6, 7.7, 6.3, 6.7, 7.2, 6.2, 6.1, 6.4, 7.2,
7.4, 7.9, 6.4, 6.3, 6.1, 7.7, 6.3, 6.4, 6. , 6.9, 6.7, 6.9, 5.8,
6.8, 6.7, 6.7, 6.3, 6.5, 6.2, 5.9]) In [9]:
petallength
Out[9]:
array([1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5, 1.4, 1.5, 1.5, 1.6, 1.4,
1.1, 1.2, 1.5, 1.3, 1.4, 1.7, 1.5, 1.7, 1.5, 1. , 1.7, 1.9, 1.6,
1.6, 1.5, 1.4, 1.6, 1.6, 1.5, 1.5, 1.4, 1.5, 1.2, 1.3, 1.5, 1.3,
1.5, 1.3, 1.3, 1.3, 1.6, 1.9, 1.4, 1.6, 1.4, 1.5, 1.4, 4.7, 4.5,
4.9, 4. , 4.6, 4.5, 4.7, 3.3, 4.6, 3.9, 3.5, 4.2, 4. , 4.7, 3.6,
4.4, 4.5, 4.1, 4.5, 3.9, 4.8, 4. , 4.9, 4.7, 4.3, 4.4, 4.8, 5. ,
4.5, 3.5, 3.8, 3.7, 3.9, 5.1, 4.5, 4.5, 4.7, 4.4, 4.1, 4. , 4.4,
4.6, 4. , 3.3, 4.2, 4.2, 4.2, 4.3, 3. , 4.1, 6. , 5.1, 5.9, 5.6,
5.8, 6.6, 4.5, 6.3, 5.8, 6.1, 5.1, 5.3, 5.5, 5. , 5.1, 5.3, 5.5,
6.7, 6.9, 5. , 5.7, 4.9, 6.7, 4.9, 5.7, 6. , 4.8, 4.9, 5.6, 5.8,
6.1, 6.4, 5.6, 5.1, 5.6, 6.1, 5.6, 5.5, 4.8, 5.4, 5.6, 5.1, 5.1,
5.9, 5.7, 5.2, 5. , 5.2, 5.4, 5.1])
数据运算¶
numpy数据运算语法与python基本一致,但是是数据中的每个数据进行运算
- arr数据与单个数据运算,arr中每个数据与单数进行计算,返回新的arr
- arr之间运算,arr对用位置的数据一一计算,返回新的arr
volume = (np.pi * petallength * (sepallength**2))/3 volumeOut[10]:
array([ 38.13265163, 35.20049849, 30.07237208, 33.23805027,
36.65191429, 51.91167701, 31.02218026, 39.26990817,
28.38324243, 37.71481981, 45.80442089, 38.60389053,
33.77840421, 21.29895099, 42.27327075, 51.03517266,
39.69716477, 38.13265163, 57.83986235, 40.85641246,
51.91167701, 40.85641246, 22.15870018, 46.30393412,
45.84212 , 41.88790205, 41.88790205, 42.47433268,
39.6427105 , 37.01215025, 38.60389053, 45.80442089,
42.47433268, 44.34881629, 37.71481981, 31.41592654,
41.1810437 , 37.71481981, 26.35586797, 40.85641246,
34.03392041, 27.56747554, 26.35586797, 41.88790205,
51.75145578, 33.77840421, 43.58017329, 31.02218026,
44.12366882, 36.65191429, 241.16959604, 193.01945264,
244.29966952, 126.71090369, 203.52284408, 153.10551797,
195.34737279, 82.97260357, 209.83325652, 110.43326496,
91.62978573, 153.10237638, 150.79644737, 183.14123814,
118.22441474, 206.83827152, 147.78051842, 144.43367505,
181.14423241, 128.0764493 , 174.97414443, 155.86488352,
203.66002695, 183.14123814, 184.4408103 , 200.71007145,
232.42759088, 235.04349037, 169.64600329, 119.08206953,
120.37535851, 117.20758592, 137.38812993, 192.2654704 ,
137.41326267, 169.64600329, 220.94088094, 182.87839155,
134.64447234, 126.71090369, 139.38199406, 179.24461605,
140.91090249, 86.39379797, 137.92848386, 142.89848344,
142.89848344, 173.09337763, 81.71282492, 139.4961386 ,
249.37962484, 179.66140067, 311.45644848, 232.75431652,
256.61575992, 399.20846168, 113.14445942, 351.57249227,
272.65044882, 331.14899843, 225.64489234, 227.33402199,
266.32328122, 170.11724219, 179.66140067, 227.33402199,
243.34253096, 415.99189683, 428.40956539, 188.49555922,
284.18532985, 160.91656451, 415.99189683, 203.66002695,
267.94957902, 325.72032632, 193.22051457, 190.93448231,
240.2019855 , 314.86298211, 349.80168121, 418.27583469,
240.2019855 , 211.97268112, 218.21083693, 378.73889114,
232.75431652, 235.91266433, 180.95573685, 269.22820723,
263.24870921, 254.2710846 , 179.66140067, 285.69224713,
267.94957902, 244.44522998, 207.81635403, 230.069302 ,
217.37307889, 185.91002846])
数据维度转换¶
volume原来是一维的,增加维度后,变为二维
In [11]:volume = volume[:, np.newaxis] volumeOut[11]:
array([[ 38.13265163],
[ 35.20049849],
[ 30.07237208],
[ 33.23805027],
[ 36.65191429],
[ 51.91167701],
[ 31.02218026],
[ 39.26990817],
[ 28.38324243],
[ 37.71481981],
[ 45.80442089],
[ 38.60389053],
[ 33.77840421],
[ 21.29895099],
[ 42.27327075],
[ 51.03517266],
[ 39.69716477],
[ 38.13265163],
[ 57.83986235],
[ 40.85641246],
[ 51.91167701],
[ 40.85641246],
[ 22.15870018],
[ 46.30393412],
[ 45.84212 ],
[ 41.88790205],
[ 41.88790205],
[ 42.47433268],
[ 39.6427105 ],
[ 37.01215025],
[ 38.60389053],
[ 45.80442089],
[ 42.47433268],
[ 44.34881629],
[ 37.71481981],
[ 31.41592654],
[ 41.1810437 ],
[ 37.71481981],
[ 26.35586797],
[ 40.85641246],
[ 34.03392041],
[ 27.56747554],
[ 26.35586797],
[ 41.88790205],
[ 51.75145578],
[ 33.77840421],
[ 43.58017329],
[ 31.02218026],
[ 44.12366882],
[ 36.65191429],
[241.16959604],
[193.01945264],
[244.29966952],
[126.71090369],
[203.52284408],
[153.10551797],
[195.34737279],
[ 82.97260357],
[209.83325652],
[110.43326496],
[ 91.62978573],
[153.10237638],
[150.79644737],
[183.14123814],
[118.22441474],
[206.83827152],
[147.78051842],
[144.43367505],
[181.14423241],
[128.0764493 ],
[174.97414443],
[155.86488352],
[203.66002695],
[183.14123814],
[184.4408103 ],
[200.71007145],
[232.42759088],
[235.04349037],
[169.64600329],
[119.08206953],
[120.37535851],
[117.20758592],
[137.38812993],
[192.2654704 ],
[137.41326267],
[169.64600329],
[220.94088094],
[182.87839155],
[134.64447234],
[126.71090369],
[139.38199406],
[179.24461605],
[140.91090249],
[ 86.39379797],
[137.92848386],
[142.89848344],
[142.89848344],
[173.09337763],
[ 81.71282492],
[139.4961386 ],
[249.37962484],
[179.66140067],
[311.45644848],
[232.75431652],
[256.61575992],
[399.20846168],
[113.14445942],
[351.57249227],
[272.65044882],
[331.14899843],
[225.64489234],
[227.33402199],
[266.32328122],
[170.11724219],
[179.66140067],
[227.33402199],
[243.34253096],
[415.99189683],
[428.40956539],
[188.49555922],
[284.18532985],
[160.91656451],
[415.99189683],
[203.66002695],
[267.94957902],
[325.72032632],
[193.22051457],
[190.93448231],
[240.2019855 ],
[314.86298211],
[349.80168121],
[418.27583469],
[240.2019855 ],
[211.97268112],
[218.21083693],
[378.73889114],
[232.75431652],
[235.91266433],
[180.95573685],
[269.22820723],
[263.24870921],
[254.2710846 ],
[179.66140067],
[285.69224713],
[267.94957902],
[244.44522998],
[207.81635403],
[230.069302 ],
[217.37307889],
[185.91002846]])
计算示例¶
In [12]:data
Out[12]:
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]]) In [13]:
# 取第四列数据,每个数据+10 d = data[:,4] +10 dOut[13]:
array([14, 19, 24])In [14]:
d = d[:, np.newaxis] dOut[14]:
array([[14],
[19],
[24]])
数据纵向堆叠¶
- np.hstack([data1, data2]), 把data2在列的方向上添加到data1上
- np.vstack([data1, data2]), data2在行的方向上添加到data1上
np.hstack([data,d])Out[15]:
array([[ 0, 1, 2, 3, 4, 14],
[ 5, 6, 7, 8, 9, 19],
[10, 11, 12, 13, 14, 24]])
查找数据¶
np.partition快速查找第n大的值
In [16]:l=[3,4,5,2,1] np.partition(l,kth=-4)Out[16]:
array([1, 2, 5, 4, 3])
随机数¶
In [17]:b = np.random.rand(10) bOut[17]:
array([0.68561367, 0.01516211, 0.53513034, 0.87153709, 0.06330117,
0.86803698, 0.11665939, 0.11038331, 0.391967 , 0.94081668]) In [18]:
b = np.random.uniform(0,10,5) bOut[18]:
array([2.06978576, 7.1781825 , 2.43242777, 8.59237313, 7.29724532])In [19]:
np.random.randn(5)Out[19]:
array([ 0.00160165, 1.16678333, -0.67973919, -0.3598035 , -0.00290401])In [20]:
np.random.randint(0,10,5)Out[20]:
array([8, 9, 3, 2, 4])In [21]:
np.random.randint(0,10,5)Out[21]:
array([2, 3, 3, 2, 4])In [22]:
np.random.seed(5) np.random.randint(0,10,5)Out[22]:
array([3, 6, 6, 0, 9])In [23]:
np.random.seed(6) np.random.randint(0,10,5)Out[23]:
array([9, 3, 4, 0, 9])In [24]:
np.random.uniform(10,100,10)Out[24]:
array([18.9524523 , 64.76262553, 57.73568176, 53.45494409, 84.2688357 ,
77.9511675 , 45.09780233, 31.58324146, 24.00535865, 75.18958605]) In [25]:
np.random.standard_normal(10)Out[25]:
array([-0.05607706, 0.86108782, 1.02566315, 0.60680207, 1.97193091,
-0.47434219, -0.39388112, -0.97062796, -1.02770216, 2.08217624]) In [26]:
np.linspace(1,20, 10)Out[26]:
array([ 1. , 3.11111111, 5.22222222, 7.33333333, 9.44444444,
11.55555556, 13.66666667, 15.77777778, 17.88888889, 20. ]) In [27]:
np.arange(0,5)Out[27]:
array([0, 1, 2, 3, 4])In [28]:
a = np.arange(10).reshape(10) aOut[28]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])In [29]:
a+aOut[29]:
array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])In [30]:
a-aOut[30]:
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])In [31]:
a*aOut[31]:
array([ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81])In [32]:
a/a
c:\python36\lib\site-packages\ipykernel_launcher.py:1: RuntimeWarning: invalid value encountered in true_divide """Entry point for launching an IPython kernel.Out[32]:
array([nan, 1., 1., 1., 1., 1., 1., 1., 1., 1.])In [33]:
a.dot(a)Out[33]:
285In [34]:
a
Out[34]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])In [35]:
b = np.arange(12).reshape(3,4) bOut[35]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]]) In [36]:
b[0]Out[36]:
array([0, 1, 2, 3])In [37]:
b[:,0]Out[37]:
array([0, 4, 8])In [38]:
b[0,:]Out[38]:
array([0, 1, 2, 3])In [39]:
b[-1]Out[39]:
array([ 8, 9, 10, 11])In [40]:
b.sizeOut[40]:
12In [41]:
b.shapeOut[41]:
(3, 4)
数据拉平¶
将多维数据将为一维
- ravel 方法是返回的视图,修改数据会影响原数据
- flat 方法是返回原数据的copy,不会影响原数据
b.ravel()Out[42]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])In [43]:
[x for x in b.flat]Out[43]:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]In [44]:
b.flat[3]Out[44]:
3
数据resize和reshape¶
- reshape:有返回值,所谓有返回值,即不对原始多维数组进行修改;
- resize:无返回值,所谓有返回值,即会对原始多维数组进行修改;
b.reshape(3,4)Out[45]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]]) In [46]:
c = b.resize(3,4) cIn [47]:
b
Out[47]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
arr平均值¶
np.mean(d, axis=0),计算平均值,axis来指定按那个轴运算
In [48]:np.mean(b, axis=0)Out[48]:
array([4., 5., 6., 7.])In [49]:
a = np.array([1,0.2,3])In [50]:
a
Out[50]:
array([1. , 0.2, 3. ])In [51]:
a.dtypeOut[51]:
dtype('float64') In [52]:
np.arange(10)Out[52]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
特殊矩阵¶
In [53]:np.ones((5,5))Out[53]:
array([[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]]) In [54]:
b
Out[54]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]]) In [55]:
np.ones_like(b)Out[55]:
array([[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]]) In [56]:
np.identity(4)Out[56]:
array([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]]) In [57]:
np.eye(4)Out[57]:
array([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])
取数据示例¶
In [58]:a
Out[58]:
array([1. , 0.2, 3. ])In [59]:
b
Out[59]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]]) In [60]:
b[:,2]Out[60]:
array([ 2, 6, 10])In [61]:
# 布尔值取数据 b[b>3]Out[61]:
array([ 4, 5, 6, 7, 8, 9, 10, 11])In [62]:
b
Out[62]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]]) In [63]:
b[b==3]Out[63]:
array([3])In [64]:
b
Out[64]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]]) In [65]:
c = b[b!=3]In [66]:
c
Out[66]:
array([ 0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11])
花式索引¶
取特定的行,并按照指定顺序排序
In [67]:b
Out[67]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]]) In [68]:
b[[2,0,1]]Out[68]:
array([[ 8, 9, 10, 11],
[ 0, 1, 2, 3],
[ 4, 5, 6, 7]]) In [69]:
b = np.arange(32).reshape(8,4) bOut[69]:
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]]) In [70]:
b[[1,5,7,2],[0,3,1,2]]Out[70]:
array([ 4, 23, 29, 10])In [71]:
b[[1,5,7,2]][:,[0,3,1,2]]Out[71]:
array([[ 4, 7, 5, 6],
[20, 23, 21, 22],
[28, 31, 29, 30],
[ 8, 11, 9, 10]]) In [72]:
b
Out[72]:
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]])
矩阵转置,轴向交换¶
In [73]:b.swapaxes(0,1)Out[73]:
array([[ 0, 4, 8, 12, 16, 20, 24, 28],
[ 1, 5, 9, 13, 17, 21, 25, 29],
[ 2, 6, 10, 14, 18, 22, 26, 30],
[ 3, 7, 11, 15, 19, 23, 27, 31]]) In [74]:
b.swapaxes(1,0)Out[74]:
array([[ 0, 4, 8, 12, 16, 20, 24, 28],
[ 1, 5, 9, 13, 17, 21, 25, 29],
[ 2, 6, 10, 14, 18, 22, 26, 30],
[ 3, 7, 11, 15, 19, 23, 27, 31]]) In [75]:
b
Out[75]:
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]])
矩阵运算示例¶
In [76]:np.add(b,b)Out[76]:
array([[ 0, 2, 4, 6],
[ 8, 10, 12, 14],
[16, 18, 20, 22],
[24, 26, 28, 30],
[32, 34, 36, 38],
[40, 42, 44, 46],
[48, 50, 52, 54],
[56, 58, 60, 62]]) In [77]:
np.sort(b[[2,0,1]])Out[77]:
array([[ 8, 9, 10, 11],
[ 0, 1, 2, 3],
[ 4, 5, 6, 7]]) In [78]:
b[[2,0,1]]Out[78]:
array([[ 8, 9, 10, 11],
[ 0, 1, 2, 3],
[ 4, 5, 6, 7]]) In [79]:
np.linalg.eig(b[0:4])Out[79]:
(array([ 3.24642492e+01, -2.46424920e+00, 2.14966418e-15, -1.17200157e-16]),
array([[-0.11417645, 0.7327781 , -0.40377562, 0.05533605],
[-0.3300046 , 0.28974835, 0.81421492, 0.33237807],
[-0.54583275, -0.15328139, -0.41710299, -0.83076428],
[-0.76166089, -0.59631113, 0.00666369, 0.44305017]])) In [80]:
np.linalg.detOut[80]:
<function numpy.linalg.linalg.det>In [81]:
b
Out[81]:
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]]) In [82]:
b[0:4]Out[82]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]]) In [83]:
np.random.randn(10)Out[83]:
array([-0.8099314 , 0.14817512, -0.69258651, -0.67934563, -0.15739984,
1.2889822 , 1.45221671, 0.2307127 , 0.88579292, 0.96533113]) In [84]:
np.random.uniform(0,1,10)Out[84]:
array([0.79782627, 0.88189639, 0.82160469, 0.30594132, 0.74537515,
0.38821925, 0.46966765, 0.71004438, 0.36512663, 0.92725033]) In [85]:
np.random.random(5)Out[85]:
array([0.73218711, 0.24383709, 0.67966439, 0.0595789 , 0.85628818])In [86]:
w = 5000 n = 1000 draws = np.random.randint(0,2,size=(w,n)) drawsOut[86]:
array([[0, 0, 1, ..., 0, 1, 1],
[1, 0, 1, ..., 0, 1, 1],
[0, 0, 0, ..., 0, 0, 0],
...,
[1, 0, 1, ..., 0, 0, 0],
[0, 1, 1, ..., 1, 0, 0],
[0, 1, 0, ..., 0, 0, 0]]) In [87]:
steps = np.where(draws > 0, 1, -1) stepsOut[87]:
array([[-1, -1, 1, ..., -1, 1, 1],
[ 1, -1, 1, ..., -1, 1, 1],
[-1, -1, -1, ..., -1, -1, -1],
...,
[ 1, -1, 1, ..., -1, -1, -1],
[-1, 1, 1, ..., 1, -1, -1],
[-1, 1, -1, ..., -1, -1, -1]]) In [88]:
# 累计求和 walks = steps.cumsum(1) walksOut[88]:
array([[ -1, -2, -1, ..., 16, 17, 18],
[ 1, 0, 1, ..., -34, -33, -32],
[ -1, -2, -3, ..., -24, -25, -26],
...,
[ 1, 0, 1, ..., 56, 55, 54],
[ -1, 0, 1, ..., -34, -35, -36],
[ -1, 0, -1, ..., 0, -1, -2]], dtype=int32)
更多精彩

