一.实验目的与实验要求
1、要求学生掌握Numpy的数组创建及随机数生成;
2、要求学生掌握Numpy中用于统计分析的基本运算函数;
3、要求学生掌握Numpy矩阵创建方法;
4、要求学生掌握Numpy数组索引的方法。
二.实验内容
- 任务1创建数组并进行运算
1.需求说明
Numpy数组在数值运算方面的效率优于Python提供的list,所以灵活掌握Numpy中数组的创建以及基础的运算是有必要的。
2.实现思路及步骤
(1)创建一个数值范围为0~1,间隔为0.01的数组。
(2)创建100个服从正态分布的随机数。
(3)对创建的两个数组进行四则运算。
(4)对创建的随机数组进行简单的统计分析。
- 任务2创建一个国际象棋的棋盘
1.需求说明
创建国际象棋棋盘,填充8×8矩阵。国际象棋棋盘是个正方形,由横纵向各8格、颜色一深一浅交错排列的64个小方格组成,深色格为黑格,浅色格为白格,棋子就在这些格子中移动,如下图所示。
2.实现思路及步骤
(1) 创建一个8×8矩阵。
(2) 把1,3,5,7行的0,2,4,6列的元素设置为1;0,2,4,6行的1,3,5,7列的元素设置为1,规律是行号和列号之和是奇数的位置设置为1。
三.实验结果
- (1)任务1创建数组并进行运算:
test3-1.py文件的代码如下:
import numpy as np#导入NumPy库
#代码test3-1
#创建一个数值范围为01,间隔为0.01的数组
arr1=np.arange(0,1,0.01)
print("使用arange函数创建的数组为:\n",arr1)
#创建由100个服从正态分布的随机数构成的数组
#arr2=np.random.randn(10,10)
arr2=np.random.randn(100)
print('生成的随机数组为:\n',arr2)
#对创建的两个数组进行四则运算
arr3=arr1+arr2
print('arr1 + arr2:\n',arr3)
arr4=arr1-arr2
print('arrl-arr2:\n',arr4)
arr5=arr1*arr2
print('arrl*arr2:\n',arr5)
arr6=arr1/arr2
print('arrl/arr2:\n',arr6)
arr7=arr1**arr2
print('arrl**arr2:\n',arr6)
#对创建的数组进行简单的统计分析
arr2.sort()#对数据进行排序
print('排序后的随机数数组为:',arr2)
#去除重复值
print('去重后的正态分布随机数数组为:',np.unique(arr2))
print('正态分布随机数数组的总和为:',np.sum(arr2))#计算数组总和
#计算所有元素的累计和
print('正态分随机数数组的累计和为:',np.cumsum(arr2))
print('正态分布随机数数组的均值为:',np.mean(arr2))#计算数组均值
#计算数组标准差
print('正态分布随机数数组的标准差为:',np.std(arr2))
print('正态分布随机数数组的方差为:',np.var(arr2))#计算数组方差
print('正态分布随机数数组的最小值为:',np.min(arr2))#计算最小值
print('正态分布随机数数组的最大值为:',np.max(arr2))#计算最大值
test3-1.py文件运行结果如下图:
C:\Users\Administrator\PycharmProjects\untitled2\venv\Scripts\python.exe "C:/Users/Administrator/PycharmProjects/untitled2/实验3 NumPy 数值计算.py"
使用arange函数创建的数组为:
[0. 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13
0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27
0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41
0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55
0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69
0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83
0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97
0.98 0.99]
生成的随机数组为:
[-1.2783294 0.24002811 1.49770725 -0.60390594 0.73603185 -1.83914297
0.27969558 1.32044787 -0.3349159 0.90103135 -0.13823456 1.07399786
0.83546135 -0.02366977 0.26120438 0.55912516 2.12782286 -1.12316108
-0.55913823 1.03825603 -0.86057583 0.98010486 -0.8811894 0.97040155
-1.31560281 -0.44995378 1.50118303 -0.23533371 0.8372029 0.36848146
1.30949118 0.27959808 0.30869752 -0.10799034 0.56045826 1.84752278
-0.54461232 -0.25940063 -1.42393404 1.69664679 -0.20710902 2.33072437
0.39531101 -1.45085246 0.17232173 -1.10358701 -0.3704594 -1.24774508
-1.05758405 -1.41474231 -0.48062729 -1.72557077 0.16399003 -1.27777708
0.32078791 -0.06617431 0.13511144 -0.50585365 -0.55199406 -0.78310458
-0.48914752 0.51763085 0.13869361 -1.02052812 0.1042048 -0.1820081
-0.20527944 -0.03472024 -0.04238655 1.09200848 0.706178 2.16058522
0.35661529 1.03401514 -0.46666045 -0.27756572 -0.36598629 -1.23465018
0.86108988 -0.73406985 -0.20553496 0.22097487 -1.58529585 -0.81920717
-0.37615116 2.03300722 -1.42733399 -1.05254279 0.52317522 1.48607789
-0.50381381 -0.29548552 -0.7379603 -0.50981591 1.34279925 -0.39325828
0.12407724 0.79036736 -0.21348131 0.04722244]
arr1 + arr2:
[-1.2783294 0.25002811 1.51770725 -0.57390594 0.77603185 -1.78914297
0.33969558 1.39044787 -0.2549159 0.99103135 -0.03823456 1.18399786
0.95546135 0.10633023 0.40120438 0.70912516 2.28782286 -0.95316108
-0.37913823 1.22825603 -0.66057583 1.19010486 -0.6611894 1.20040155
-1.07560281 -0.19995378 1.76118303 0.03466629 1.1172029 0.65848146
1.60949118 0.58959808 0.62869752 0.22200966 0.90045826 2.19752278
-0.18461232 0.11059937 -1.04393404 2.08664679 0.19289098 2.74072437
0.81531101 -1.02085246 0.61232173 -0.65358701 0.0895406 -0.77774508
-0.57758405 -0.92474231 0.01937271 -1.21557077 0.68399003 -0.74777708
0.86078791 0.48382569 0.69511144 0.06414635 0.02800594 -0.19310458
0.11085248 1.12763085 0.75869361 -0.39052812 0.7442048 0.4679919
0.45472056 0.63527976 0.63761345 1.78200848 1.406178 2.87058522
1.07661529 1.76401514 0.27333955 0.47243428 0.39401371 -0.46465018
1.64108988 0.05593015 0.59446504 1.03097487 -0.76529585 0.01079283
0.46384884 2.88300722 -0.56733399 -0.18254279 1.40317522 2.37607789
0.39618619 0.61451448 0.1820397 0.42018409 2.28279925 0.55674172
1.08407724 1.76036736 0.76651869 1.03722244]
arrl-arr2:
[ 1.2783294 -0.23002811 -1.47770725 0.63390594 -0.69603185 1.88914297
-0.21969558 -1.25044787 0.4149159 -0.81103135 0.23823456 -0.96399786
-0.71546135 0.15366977 -0.12120438 -0.40912516 -1.96782286 1.29316108
0.73913823 -0.84825603 1.06057583 -0.77010486 1.1011894 -0.74040155
1.55560281 0.69995378 -1.24118303 0.50533371 -0.5572029 -0.07848146
-1.00949118 0.03040192 0.01130248 0.43799034 -0.22045826 -1.49752278
0.90461232 0.62940063 1.80393404 -1.30664679 0.60710902 -1.92072437
0.02468899 1.88085246 0.26767827 1.55358701 0.8304594 1.71774508
1.53758405 1.90474231 0.98062729 2.23557077 0.35600997 1.80777708
0.21921209 0.61617431 0.42488856 1.07585365 1.13199406 1.37310458
1.08914752 0.09236915 0.48130639 1.65052812 0.5357952 0.8320081
0.86527944 0.70472024 0.72238655 -0.40200848 -0.006178 -1.45058522
0.36338471 -0.30401514 1.20666045 1.02756572 1.12598629 2.00465018
-0.08108988 1.52406985 1.00553496 0.58902513 2.40529585 1.64920717
1.21615116 -1.18300722 2.28733399 1.92254279 0.35682478 -0.59607789
1.40381381 1.20548552 1.6579603 1.43981591 -0.40279925 1.34325828
0.83592276 0.17963264 1.19348131 0.94277756]
arrl*arr2:
[-0. 0.00240028 0.02995414 -0.01811718 0.02944127 -0.09195715
0.01678173 0.09243135 -0.02679327 0.08109282 -0.01382346 0.11813976
0.10025536 -0.00307707 0.03656861 0.08386877 0.34045166 -0.19093738
-0.10064488 0.19726865 -0.17211517 0.20582202 -0.19386167 0.22319236
-0.31574468 -0.11248844 0.39030759 -0.0635401 0.23441681 0.10685962
0.39284735 0.08667541 0.09878321 -0.03563681 0.19055581 0.64663297
-0.19606044 -0.09597823 -0.54109493 0.66169225 -0.08284361 0.95559699
0.16603062 -0.62386656 0.07582156 -0.49661416 -0.17041133 -0.58644019
-0.50764034 -0.69322373 -0.24031364 -0.88004109 0.08527481 -0.67722185
0.17322547 -0.03639587 0.0756624 -0.28833658 -0.32015656 -0.4620317
-0.29348851 0.31575482 0.08599004 -0.64293272 0.06669107 -0.11830526
-0.13548443 -0.02326256 -0.02882285 0.75348585 0.4943246 1.5340155
0.25676301 0.75483105 -0.34532873 -0.20817429 -0.27814958 -0.95068064
0.67165011 -0.57991518 -0.16442796 0.17898965 -1.2999426 -0.67994195
-0.31596698 1.72805614 -1.22750723 -0.91571222 0.46039419 1.32260932
-0.45343243 -0.26889183 -0.67892348 -0.4741288 1.2622313 -0.37359537
0.11911415 0.76665634 -0.20921169 0.04675021]
arrl/arr2:
[-0.00000000e+00 4.16617868e-02 1.33537445e-02 -4.96766100e-02
5.43454742e-02 -2.71865759e-02 2.14518940e-01 5.30123161e-02
-2.38865937e-01 9.98855368e-02 -7.23408074e-01 1.02421061e-01
1.43633216e-01 -5.49223832e+00 5.35978754e-01 2.68276249e-01
7.51942294e-02 -1.51358521e-01 -3.21923972e-01 1.82999177e-01
-2.32402530e-01 2.14262789e-01 -2.49662560e-01 2.37015284e-01
-1.82425879e-01 -5.55612625e-01 1.73196736e-01 -1.14730693e+00
3.34447003e-01 7.87013815e-01 2.29096618e-01 1.10873436e+00
1.03661344e+00 -3.05582898e+00 6.06646421e-01 1.89442860e-01
-6.61020663e-01 -1.42636506e+00 -2.66866294e-01 2.29865169e-01
-1.93134997e+00 1.75910976e-01 1.06245461e+00 -2.96377482e-01
2.55336339e+00 -4.07761232e-01 -1.24170151e+00 -3.76679507e-01
-4.53864638e-01 -3.46352828e-01 -1.04030714e+00 -2.95554380e-01
3.17092454e+00 -4.14782834e-01 1.68335523e+00 -8.31138275e+00
4.14472684e+00 -1.12680813e+00 -1.05073594e+00 -7.53411501e-01
-1.22662381e+00 1.17844600e+00 4.47028527e+00 -6.17327428e-01
6.14175159e+00 -3.57126968e+00 -3.21512952e+00 -1.92971010e+01
-1.60428249e+01 6.31863227e-01 9.91251504e-01 3.28614671e-01
2.01898242e+00 7.05985793e-01 -1.58573542e+00 -2.70206281e+00
-2.07658052e+00 -6.23658436e-01 9.05828784e-01 -1.07619186e+00
-3.89228195e+00 3.66557512e+00 -5.17253608e-01 -1.01317473e+00
-2.23314477e+00 4.18099844e-01 -6.02521909e-01 -8.26569723e-01
1.68203685e+00 5.98891894e-01 -1.78637422e+00 -3.07967709e+00
-1.24667953e+00 -1.82418786e+00 7.00030177e-01 -2.41571519e+00
7.73711581e+00 1.22727741e+00 -4.59056571e+00 2.09646111e+01]
arrl**arr2:
C:/Users/Administrator/PycharmProjects/untitled2/实验3 NumPy 数值计算.py:19: RuntimeWarning: divide by zero encountered in power
arr7=arr1**arr2
[-0.00000000e+00 4.16617868e-02 1.33537445e-02 -4.96766100e-02
5.43454742e-02 -2.71865759e-02 2.14518940e-01 5.30123161e-02
-2.38865937e-01 9.98855368e-02 -7.23408074e-01 1.02421061e-01
1.43633216e-01 -5.49223832e+00 5.35978754e-01 2.68276249e-01
7.51942294e-02 -1.51358521e-01 -3.21923972e-01 1.82999177e-01
-2.32402530e-01 2.14262789e-01 -2.49662560e-01 2.37015284e-01
-1.82425879e-01 -5.55612625e-01 1.73196736e-01 -1.14730693e+00
3.34447003e-01 7.87013815e-01 2.29096618e-01 1.10873436e+00
1.03661344e+00 -3.05582898e+00 6.06646421e-01 1.89442860e-01
-6.61020663e-01 -1.42636506e+00 -2.66866294e-01 2.29865169e-01
-1.93134997e+00 1.75910976e-01 1.06245461e+00 -2.96377482e-01
2.55336339e+00 -4.07761232e-01 -1.24170151e+00 -3.76679507e-01
-4.53864638e-01 -3.46352828e-01 -1.04030714e+00 -2.95554380e-01
3.17092454e+00 -4.14782834e-01 1.68335523e+00 -8.31138275e+00
4.14472684e+00 -1.12680813e+00 -1.05073594e+00 -7.53411501e-01
-1.22662381e+00 1.17844600e+00 4.47028527e+00 -6.17327428e-01
6.14175159e+00 -3.57126968e+00 -3.21512952e+00 -1.92971010e+01
-1.60428249e+01 6.31863227e-01 9.91251504e-01 3.28614671e-01
2.01898242e+00 7.05985793e-01 -1.58573542e+00 -2.70206281e+00
-2.07658052e+00 -6.23658436e-01 9.05828784e-01 -1.07619186e+00
-3.89228195e+00 3.66557512e+00 -5.17253608e-01 -1.01317473e+00
-2.23314477e+00 4.18099844e-01 -6.02521909e-01 -8.26569723e-01
1.68203685e+00 5.98891894e-01 -1.78637422e+00 -3.07967709e+00
-1.24667953e+00 -1.82418786e+00 7.00030177e-01 -2.41571519e+00
7.73711581e+00 1.22727741e+00 -4.59056571e+00 2.09646111e+01]
排序后的随机数数组为: [-1.83914297 -1.72557077 -1.58529585 -1.45085246 -1.42733399 -1.42393404
-1.41474231 -1.31560281 -1.2783294 -1.27777708 -1.24774508 -1.23465018
-1.12316108 -1.10358701 -1.05758405 -1.05254279 -1.02052812 -0.8811894
-0.86057583 -0.81920717 -0.78310458 -0.7379603 -0.73406985 -0.60390594
-0.55913823 -0.55199406 -0.54461232 -0.50981591 -0.50585365 -0.50381381
-0.48914752 -0.48062729 -0.46666045 -0.44995378 -0.39325828 -0.37615116
-0.3704594 -0.36598629 -0.3349159 -0.29548552 -0.27756572 -0.25940063
-0.23533371 -0.21348131 -0.20710902 -0.20553496 -0.20527944 -0.1820081
-0.13823456 -0.10799034 -0.06617431 -0.04238655 -0.03472024 -0.02366977
0.04722244 0.1042048 0.12407724 0.13511144 0.13869361 0.16399003
0.17232173 0.22097487 0.24002811 0.26120438 0.27959808 0.27969558
0.30869752 0.32078791 0.35661529 0.36848146 0.39531101 0.51763085
0.52317522 0.55912516 0.56045826 0.706178 0.73603185 0.79036736
0.83546135 0.8372029 0.86108988 0.90103135 0.97040155 0.98010486
1.03401514 1.03825603 1.07399786 1.09200848 1.30949118 1.32044787
1.34279925 1.48607789 1.49770725 1.50118303 1.69664679 1.84752278
2.03300722 2.12782286 2.16058522 2.33072437]
去重后的正态分布随机数数组为: [-1.83914297 -1.72557077 -1.58529585 -1.45085246 -1.42733399 -1.42393404
-1.41474231 -1.31560281 -1.2783294 -1.27777708 -1.24774508 -1.23465018
-1.12316108 -1.10358701 -1.05758405 -1.05254279 -1.02052812 -0.8811894
-0.86057583 -0.81920717 -0.78310458 -0.7379603 -0.73406985 -0.60390594
-0.55913823 -0.55199406 -0.54461232 -0.50981591 -0.50585365 -0.50381381
-0.48914752 -0.48062729 -0.46666045 -0.44995378 -0.39325828 -0.37615116
-0.3704594 -0.36598629 -0.3349159 -0.29548552 -0.27756572 -0.25940063
-0.23533371 -0.21348131 -0.20710902 -0.20553496 -0.20527944 -0.1820081
-0.13823456 -0.10799034 -0.06617431 -0.04238655 -0.03472024 -0.02366977
0.04722244 0.1042048 0.12407724 0.13511144 0.13869361 0.16399003
0.17232173 0.22097487 0.24002811 0.26120438 0.27959808 0.27969558
0.30869752 0.32078791 0.35661529 0.36848146 0.39531101 0.51763085
0.52317522 0.55912516 0.56045826 0.706178 0.73603185 0.79036736
0.83546135 0.8372029 0.86108988 0.90103135 0.97040155 0.98010486
1.03401514 1.03825603 1.07399786 1.09200848 1.30949118 1.32044787
1.34279925 1.48607789 1.49770725 1.50118303 1.69664679 1.84752278
2.03300722 2.12782286 2.16058522 2.33072437]
正态分布随机数数组的总和为: 1.1924119720296829
正态分随机数数组的累计和为: [ -1.83914297 -3.56471374 -5.1500096 -6.60086206 -8.02819605
-9.45213009 -10.8668724 -12.18247521 -13.46080461 -14.7385817
-15.98632678 -17.22097696 -18.34413803 -19.44772505 -20.50530909
-21.55785188 -22.57838 -23.45956939 -24.32014523 -25.13935239
-25.92245698 -26.66041728 -27.39448713 -27.99839307 -28.5575313
-29.10952536 -29.65413769 -30.1639536 -30.66980725 -31.17362106
-31.66276858 -32.14339587 -32.61005632 -33.06001009 -33.45326837
-33.82941954 -34.19987894 -34.56586523 -34.90078113 -35.19626665
-35.47383237 -35.733233 -35.96856672 -36.18204803 -36.38915705
-36.59469201 -36.79997145 -36.98197955 -37.12021411 -37.22820445
-37.29437876 -37.33676531 -37.37148555 -37.39515531 -37.34793288
-37.24372808 -37.11965083 -36.9845394 -36.84584579 -36.68185576
-36.50953403 -36.28855916 -36.04853104 -35.78732666 -35.50772858
-35.22803299 -34.91933547 -34.59854757 -34.24193228 -33.87345082
-33.47813981 -32.96050896 -32.43733374 -31.87820858 -31.31775032
-30.61157232 -29.87554047 -29.08517312 -28.24971177 -27.41250887
-26.55141899 -25.65038764 -24.67998609 -23.69988123 -22.66586609
-21.62761006 -20.5536122 -19.46160372 -18.15211255 -16.83166468
-15.48886542 -14.00278754 -12.50508029 -11.00389726 -9.30725047
-7.45972769 -5.42672047 -3.29889762 -1.1383124 1.19241197]
正态分布随机数数组的均值为: 0.011924119720296828
正态分布随机数数组的标准差为: 0.944262338901446
正态分布随机数数组的方差为: 0.8916313646676293
正态分布随机数数组的最小值为: -1.8391429692420478
正态分布随机数数组的最大值为: 2.330724371843149
Process finished with exit code 0
- (2)任务2创建一个国际象棋的棋盘:
test3-2.py文件的代码如下:
import numpy as np#导入NumPy库
#代码test3-2#创建一个8*8矩阵
matr1=np.int8(np.zeros((8,8)))
print('创建的矩阵为:\n',matr1)
#把1,3,5,7行的0,2,4,6列的元素设置为1;0,2,4,6行的1,3,5,7列的元素设置为1,规律是行号和列号之和是奇数的位置设置为1
for i in range(8):
for j in range(8):
if(i+j)%2!=0:
matr1[i,j]=1
print('国际棋盘对应的矩阵为:\n',matr1)
#输出国际象棋模盘
for i in range(0,8):
for j in range(0,8):
if matr1[i,j]==0:
print("口",end=' ')#将print默认的换行变为加两个空格
else:
print("■", end=' ')#将print默认的换行变为加两个空格
print('\n')#此行结束,换行
test3-2.py文件运行结果如下图:
四.结果分析与实验体会
学会了Numpy的数组创建及随机数生成;
Numpy中用于统计分析的基本运算函数;
Numpy矩阵创建方法;
Numpy数组索引的方法。