Numpy大作业之简洁版
Posted tacit-lxs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Numpy大作业之简洁版相关的知识,希望对你有一定的参考价值。
大作业
本次练习使用 鸢尾属植物数据集.\\iris.txt
,在这个数据集中,包括了三类不同的鸢尾属植物:Iris Setosa,Iris Versicolour,Iris Virginica。每类收集了50个样本,因此这个数据集一共包含了150个样本。
- sepallength:萼片长度
- sepalwidth:萼片宽度
- petallength:花瓣长度
- petalwidth:花瓣宽度
1. 统计相关的操作
代码:
import numpy as np
file = r'iris.txt'
iris = np.loadtxt(file,dtype=object,skiprows=1,delimiter=',')
print(iris[:10]) //打印前10行
x = np.loadtxt(file, delimiter=',', skiprows=1, usecols=0)
print(x[:10])
print('萼片长度中位数:',np.median(x))
print('萼片长度平均数数:',np.mean(x))
print('萼片长度的标准差:',np.std(x))
aMax=np.amax(x)
aMin=np.amin(x)
y = (x - aMin)/np.ptp(x)//用极差进行标准化
print('标准化后:',y[:10])
print('萼片长度5分位数和95分位数:',np.percentile(x, [5, 95]))
结果:
2. 把iris_data数据集中的20个随机位置修改为np.nan值。
代码:
import numpy as np
file = r'iris.txt'
iris = np.loadtxt(file,dtype=object,skiprows=1,delimiter=',')
i,j = np.shape(iris)
iris[np.random.choice(i,20),np.random.choice(j,20)] = np.nan//随机选取索引
print(iris[:10])
结果:
3. 在iris_data的sepallength中查找缺失值的个数和位置(第1列)。
代码:
import numpy as np
file = r'iris.txt'
iris = np.loadtxt(file,dtype=object,skiprows=1,delimiter=',')
i,j = np.shape(iris) //i:行数,j:列数
iris[np.random.choice(i,20),np.random.choice(j,20)] = np.nan//随机选取索引
print(iris[:10])
iris_sepallength = iris[:,0].astype('float')
print(iris_sepallength[:10])
sepallength_nan = np.isnan(iris_sepallength)
print('缺失值个数:',np.sum(sepallength_nan))
print('缺失值位置:',np.where(sepallength_nan == True))
结果:
4. 筛选具有 sepallength(第1列)< 5.0 并且 petallength(第3列)> 1.5 的 iris_data行。
代码:
import numpy as np
file = r'iris.txt'
iris = np.loadtxt(file,dtype=object,skiprows=1,delimiter=',')
iris_sepallength = iris[:,0].astype('float')
iris_peltalength = iris[:,2].astype('float')
#如果where只给出了条件,返回的是索引
index = np.where(np.logical_and(iris_sepallength < 5.0,iris_peltalength > 1.5))
print(iris[index])
结果:
5.选择没有任何 nan 值的 iris_data行.
代码:
import numpy as np
file = r'iris.txt'
iris_data = np.loadtxt(file ,dtype=float,delimiter=',',skiprows=1,usecols=(0,1,2,3))
i,j = np.shape(iris_data)
iris_data[np.random.choice(i,20),np.random.choice(j,20)] = np.nan
deled_iris_data = iris_data[np.sum(np.isnan(iris_data),axis=1)== 0]
print(deled_iris_data[:10])
结果:
6. 计算 iris_data 中sepalLength(第1列)和petalLength(第3列)之间的相关系数。
相关系数:
代码:
import numpy as np
file = r'iris.txt'
iris_data = np.loadtxt(file ,dtype=float,delimiter=',',skiprows=1,usecols=(0,1,2,3))
sepallength = iris_data[:,0]
petallength = iris_data[:,2]
m1 = np.mean(sepallength)
m2 = np.mean(petallength)
x = np.mean((sepallength - m1)*(petallength - m2))
y = np.std(sepallength)*np.std(petallength)
print('相关系数:',x/y)
x=np.cov(sepallength,petallength,ddof=False)
print('协方差矩阵:',x)
y=np.std(sepallength)*np.std(petallength)
print('相关系数:',x[0,1]/y)
结果:
7. 在numpy数组中将所有出现的nan替换为0。
代码:
import numpy as np
file = r'iris.txt'
iris_data = np.loadtxt(file ,dtype=float,delimiter=',',skiprows=1,usecols=(0,1,2,3))
i,j = np.shape(iris_data)
iris_data[np.random.choice(i,20),np.random.choice(j,20)] = np.nan
iris_data[np.where(np.isnan(iris_data))] = 0 //找到为nan的位置并赋值为0
print(iris_data[:])
结果:
8.找出鸢尾属植物物种中的唯一值和唯一值出现的数量。
代码:
import numpy as np
file = r'iris.txt'
iris_data = np.loadtxt(file ,dtype=float,delimiter=',',skiprows=1,usecols=(0,1,2,3))
x,p=np.unique(iris_data,return_counts=True)
print('每一个值和相应数量:')
print(x,'\\n',p)
结果:
9. 将 iris_data 的花瓣长度(第3列)以形成分类变量的形式显示。定义:Less than 3 --> ‘small’;3-5 --> ‘medium’;’>=5 --> ‘large’。
代码:
import numpy as np
file = r'iris.txt'
iris_data = np.loadtxt(file ,dtype=float,delimiter=',',skiprows=1,usecols=(0,1,2,3))
sepallength = iris_data[:,0]
petallength = iris_data[:,2]
petal_length_bin=np.digitize(iris_data[:,2],[0,3,5,10])//直方图(区间0-3,3-5,5-10)
print(petal_length_bin)
#映射字典
label_map={1:'small',2:'medium',3:'larger',4:np.nan}
petal_length_cat=[label_map[x] for x in petal_length_bin]
print('前10个转换数据:',petal_length_cat[:])
结果:
10. 在iris中创建一个新列volume,其中 volume 是 (pi x petallength x sepallength ^ 2)/ 3
**
代码:
import numpy as np
file = r'iris.txt'
iris = np.loadtxt(file,dtype=object,delimiter=',',skiprows=1)
iris_data = np.loadtxt(file ,dtype=float,delimiter=',',skiprows=1,usecols=(0,1,2,3))
sepallength = iris_data[:,0]
petallength = iris_data[:,2]
volumn = (np.pi * petallength * sepallength**2) / 3
volumn = volumn[:,np.newaxis] //增加维度
iris_data = np.concatenate([iris,volumn],axis=1) //拼接
#iris_data = np.hstack((iris,volumn))
print(iris_data)
结果:
11. 随机抽鸢尾属植物的种类,使得Iris-setosa的数量是Iris-versicolor和Iris-virginica数量的两倍。
代码:
import numpy as np
file = r'iris.txt'
iris = np.loadtxt(file,dtype=object,delimiter=',',skiprows=1)
iris_data = np.loadtxt(file ,dtype=float,delimiter=',',skiprows=1,usecols=(0,1,2,3))
species=np.array(['Iris-setosa','Iris-versicolor','Iris-virginica'])
species_out=np.random.choice(species,10000,p=[0.5,0.25,0.25])
print('随机抽取情况:',np.unique(species_out,return_counts=True))
结果:
12. 在鸢尾属植物数据集中找到最常见的花瓣长度值.
代码:
import numpy as np
file = r'iris.txt'
iris = np.loadtxt(file,dtype=object,delimiter=',',skiprows=1)
iris_data = np.loadtxt(file ,dtype=float,delimiter=',',skiprows=1,usecols=(0,1,2,3))
petallength = iris_data[:,2]
print(np.unique(petallength,return_counts=True))
petlen,counts = np.unique(petallength,return_counts=True)
print('最长见花瓣的长度:',petlen[np.argmax(counts)])
print('出现的最大次数:',np.max(counts))
结果:
18. 在鸢尾花数据集的 petalwidth(第4列)中查找第一次出现的值大于1.0的位置。
import numpy as np
file = r'iris.txt'
iris = np.loadtxt(file,dtype=object,skiprows=1,delimiter=',')//读取文件
print(iris[:10])
iris_petalwidth = iris[:,3].astype('float')//取出第四列
print(iris_petalwidth)
index = np.where(iris_petalwidth > 1.0)//返回一个元组,包含着numpy数组
print(index)
print('第一次大于1.0的位置',index[0][0])//从0开始计数
结果:
以上是关于Numpy大作业之简洁版的主要内容,如果未能解决你的问题,请参考以下文章
HTML5期末大作业:餐饮美食网站设计——咖啡(10页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 咖啡网页设计 美食餐饮网页设计...(代码片段