学习记录(bushi
课堂内容
Numpy库
处理数组的库,一维、二维、多维都可以,查看维数np.ndim
,查看数组元素总数np.size
,查看数组的行列np.shape
,查看数据的元素类型np.dtype
import numpy as np #导入numpy库
first=np.array([1,2,3,4,5]) #创建一个一维数组
second=np.array([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]]) #创建一个二维数组,中括号里面再次中括号
数组切片(slicing)
first[[0,1,2]] #查看第1、2、3个元素
first[0:2] #查看第1、2个元素
second[1,0] #查看第2行第1列的元素
second[:,1])#查看第2列的所有元素
second[[0,1],[2,3]] #查看第1行第23列和第2行第4列的元素
second[:,[1,2]] #查看第2、3列的所有行的元素
second[[1,2],:] #查看第2、3行的所有列的元素
条件筛选
mask=(number==1)|(number==2) #条件为number为1和number为2
mask #条件是一个布尔值组成的数组
number[mask] #筛选number中复合条件的元素
函数
生成一个范围的一维数组arrange()
,将一维数组转换成多维数组reshape()
,生成指定大小的全0数组zero()
,生成指定大小的全1数组ones()
a=np.arange(0,10,1) #生成一个0到9的一维数组,步长为1
a.reshape(2,5) #将一维数组a转换成2*5的二维数组
b=np.zeros((2,5)) #生成一个2*5的全0数组,括号里面再括号
c=np.ones((2,5)) #生成一个2*5的全1数组,括号里面再括号
数组运算
全数组的数值加减乘除乘方可以直接运算,大小相同的数组与数组之间也可以进行直接加减乘除乘方,一定要行、列都相等
b+1 #全0数组b的每一个元素都+1
c*5 #全1数组c的每一个元素都*5
b+c #b数组的每一个元素与c数组的对应位置的元素相加
也可以给数组里单独某个元素进行运算
b[1,0]+1 #给数组b的第2行,第1列的元素+1
还可以进行函数计算
c.sum(axis=0) #数组c按列求和
second.mean() #数组second的所有元素求平均值
first.argmax() #数组first的最大元素是第几个
c.cumsum() #数组c从0号位开始往后累加
随机生成数组
用random
模块可以生成随机样本,randint
生成随机的一组整数,uniform
生成均匀分布的随机数,normal
生成服从正态分布的随机数
np.random.randint(0,11,10) #生成10个元素的一维随机数组,取值范围在0到10
np.random.randint(0,11,(2,3)) #生成2*3的随机数组,取值范围在0到10
np.random.uniform(0,11,10) #生成0到10的均匀分布的随机数
np.random.normal(0,1,10) #生成0到1的服从正态分布的随机数
练(zuo)习(ye)
因为怠惰太久而找不到题目细节的作业
1、“大润发”、“沃尔玛”、“联华”和“农工商”四个超市都卖苹果、香蕉、桔子、猕猴桃和芒果5种水果。使用NumPy的ndarray实现数据处理功能。
import numpy as np
Markets=np.array(['大润发','沃尔玛','联华','农工商'])
print('超市名称分别为:'+','.join((str(i)for i in Markets)))
Fruits=np.array(['apple','banana','orange','kivi','mango'])
print('水果的名称分别为:'+','.join((str(i)for i in Fruits)))
Price=np.random.randint(4,11,20).reshape(4,5)
print('各个超市的水果价格为:')
print(Price)
print('大润发苹果价格+1:'+''.join((str(i)for i in Price[Markets=='大润发',Fruits=='apple']+1)))
print('好德香蕉价格+1:'+''.join((str(i)for i in Price[Markets=='联华',Fruits=='banana']+1)))
print('农工商所有水果价格-2:'+''.join((str(i)for i in Price[Markets=='农工商']-2)))
print('苹果均价:'+(str(Price[:,Fruits=='apple'].mean())))
print('芒果均价:'+(str(Price[:,Fruits=='mango'].mean())))
n=Price[:,Fruits=='orange'].argmax()
print('桔子最贵的超市是:'+str(Markets[n])+'超市')
2、基于随机游走实例,使用ndarray和随机数生成函数模拟一个物体在三维空间随机游走的过程。
import numpy as np
steps=10
rndwlk=np.random.normal(0,1,size=(3,steps))
position=rndwlk.cumsum(axis=1)
dists=np.sqrt(position[0]**2+position[1]**2+position[2]**2)
print('z轴上到达的最远距离为:',abs(position[2]).max())
print('物体在三维空间距原点的最近距离为:',dists.min())