项目 | 内容 |
课程班级博客链接 | |
这个作业要求链接 | /homework/12540 |
博客名称 | 2003031119——李勇——Python数据分析第三周作业—numpy的简单操作 |
要求 | 每道题要有题目,代码(使用插入代码,不会插入代码的自己查资料解决,不要直接截图代码!!),截图(只截运行结果) |
题目一:扩展阅读心得体会
Python 中的pip,numpy,matplotlib 安装使用心得
在度娘里搜索查看了大半天,后来安装成功,并可在Pycharm 中import numpy 即import matplotlib 资源库。主要做法如下:
1.电脑联网
2.进入cmd ,进入python
3.pip install wheel
4.pip install numpy
5.pip install matplotlib
至此,以上三个资源库已全部安装完毕,在电脑联网时,无需下载以上三个资源库,输入pip 命令后,电脑自动在官网搜索下载安装与你python 匹配的资源库。此时安装完成后,在cmd 命令行试验下是否能够import ,可以用一下代码试验: 不进入python,就在cmd 安装
2.扩展阅读:Numpy常用方法
简单来说,Numpy是python的一个科学计数包,包含了多维数组的操作。Numpy的核心是ndarray对象,这个对象封装了同质数据类型的n维数组。
1、Numpy.linspace() 方法
Numpy.linspace(start,stop,num=50,endpoint=True,restep=False,dtype=None)
功能:返回在规定范域内的数值列表
参数:
start:规定区域的开始值
stop:规定区域的结束值
num:产生样本点的的数目
endpoint:如果设置为True,那么stop参数将产生影响
dtype:输出数值的类型
例子:
import numpy as np
np.linspace(2.0, 3.0, num=5)
array([ 2. , 2.25, 2.5 , 2.75, 3. ])
2、Numpy.arange()方法
Numpy.arange([start,]stop,[step]dtype=None)
功能:在给定的范围内,返回一数组
参数:
Start:数值范围的起始点(该范围包括该值)
Stop:数值范围的结束值(该范围不包括该值)
Step:单位位移值
dtype:输出数组的类型
例子:
import numpy as np
np.arange(3)
array([0, 1, 2])
3、umpy.random.rand()方法
numpy.random.rand(d0,d1,…,dn)
功能:生成一个参数格式类型的数组
参数:
d0,d1,…,dn:返回一个参数类型的维度
例子:
import numpy as np
np.random.rand(3,2)
array([[ 0.14022471, 0.96360618], #random
[ 0.37601032, 0.25528411], #random
[ 0.49313049, 0.94909878]]) #random
4、Numpy.random.randn()方法
Numpy.random.randn(d0,d1,…,dn)
功能:该函数将产生一个形如(d0,d1,…,dn)格式类型形式的样本,或者样本集,该样本或者样本集服从正太分布(高斯分布)。如果传入参数是元组类型,可用numpy.random.standard_normal代替
参数:
d0,d1,…,dn:该参数为我们要返回数组类型的格式,如果没有输入参数,Python则返回单个浮点值
例子:
import numpy as np
2.5 * np.random.randn(2, 4) + 3
array([[-4.49401501, 4.00950034, -1.81814867, 7.29718677], #random
[ 0.39924804, 4.68456316, 4.99394529, 4.84057254]]) #random
5、Numpy.fromfunction()方法
Numpy.fromfunction(function,shape,**Kwargs)
功能:通过方法的执行结果,从而来构造一个特定的数组格式
参数:
Function:该函数可以被N个参数所调用,该N个参数类型格式被shape所决定
Shape:该参数决定输出数组类型的维度,也决定function该参数的输入格式
例子:
import numpy as np
np.fromfunction(lambda i, j: i == j, (3, 3), dtype=int)
array([[ True, False, False],
[False, True, False],
[False, False, True]])
6、numpy.ndarray.flatten
该函数返回折叠为一维的数组副本
例子:
import numpy as np
a = np.arange(8).reshape(2,4)
print '原数组:'
print a
print '\n'
# default is column-major
print '展开的数组:'
print a.flatten()
print '\n'
print '以 F 风格顺序展开的数组:'
print a.flatten(order = 'F')
原数组:
[[0 1 2 3]
[4 5 6 7]]
展开的数组:
[0 1 2 3 4 5 6 7]
以 F 风格顺序展开的数组:
[0 4 1 5 2 6 3 7]
7、numpy.zeros
返回特定大小,以 0 填充的新数组。
例子:
# 含有 5 个 0 的数组,默认类型为 float
import numpy as np
x = np.zeros(5)
print x
[ 0. 0. 0. 0. 0.]
8、numpy.asarray
此函数类似于numpy.array,除了它有较少的参数。 这个例程对于将 Python 序列转换为ndarray非常有用。
# 将列表转换为 ndarray
import numpy as np
x = [1,2,3]
a = np.asarray(x)
print a
[1 2 3]
9、ndarray对象的内容可以通过索引或切片来访问和修改,就像 Python 的内置容器对象一样。
import numpy as np
a = np.arange(10)
s = slice(2,7,2)
print a[s]
[2 4 6]
题目二
实训一:
1.训练要点
(1)掌握Nuympy的数组的创建及随机数的生成。
(2)掌握Nuympy中用于统计分析的基本运算函数。
2.需求说明
Numpy数组在数值运算方面的效率优于python提供的list,所以灵活掌握numpy中数组的创建以及基础的运算是有必要的。
3.实现思路及步骤
(1)创建一个数值范围为0~1,间隔为0.01的数组。
(2)创建100个服从正态分布的随机数。
(3)对创建的两个数组进行四则运算。
(4)对创建的随机数组进行简单的统计分析。
4.运行代码和截图
import numpy as np
#1、创建一个数值范围为0~1,间隔为0.01的数组
arr1=np.arange(0,1,0.01)
print("arange函数创建的数值范围为0~1间隔为0.01的数组arr1为:\n",arr1)
#2、创建由100个服从正态分布的随机数构成的数组
arr2=np.random.randn(100)
print('生成的随机数组arr2为:\n',arr2)
#3、对创建的两个数组进行四则运算
print('arr1 + arr2:\n',arr1+arr2)
print('arrl-arr2:\n',arr1-arr2)
print('arrl*arr2:\n',arr1*arr2)
print('arrl/arr2:\n',arr1/arr2)
#print('arrl**arr2:\n',arr1**arr2)
#4、对创建的数组进行简单的统计分析
print('正态分布数数组的累计和为:\n',np.cumsum(arr2))#计算所有元素的累计和
print('正态分布数去重后的值组为:\n',np.unique(arr2))#去除重复值
print('正态分布数组的均值为:',np.mean(arr2))#计算数组均值
print('正态分布数组的标准差为:',np.std(arr2))#计算数组标准差
print('正态分布数组的方差为:',np.var(arr2))#计算数组方差
print('正态分布数组的最小值为:',np.min(arr2))#计算最小值
print('正态分布数组的最大值为:',np.max(arr2))#计算最大值
print('正态分布数组的总和为:',np.sum(arr2))#计算数组总和
实训二
1.训练要点
(1)掌握矩阵创建方法。
(2)掌握数组索引的方法。
2.需求说明
创建国际象棋棋盘,填充8x8矩阵。国际象棋棋盘是个正方形,由横纵向8格、颜色一深一浅交错排列的64个小方格组成,深色格为黑格,浅色格为白格,棋子就在这些格子中移动,如图2-3所示。
3.实验思路及步骤
(1)创建一个8×8矩阵。
(2)把1、3、5、7行和2、4、6列的元素设置为1。
4.运行代码和截图
import numpy as np
matr1=np.ones((8,8))
for i in range(8):
for j in range(8):
if(i+j)%2==0:
matr1[i,j]=0
print('国际棋盘对应的矩阵为:\n',matr1)
for i in range(0,8):
for j in range(0,8):
if matr1[i,j]==0:
print("□",end=' ')
else:
print("■", end=' ')
print('\n')