学习时间:9:00——11:30 15:00——17:00
1. 求平均值 mean()
import numpy as np
a = np.arange(20).reshape((4,5))
print(a)
print(a.mean())
#[[ 0 1 2 3 4]
# [ 5 6 7 8 9]
# [10 11 12 13 14]
# [15 16 17 18 19]]
#9.5
若想求某一维度的平均值,可以设置参数axis,axis=0,计算每一列的平均值;axis=1,计算每一行的平均值
import numpy as np
a = np.arange(20).reshape((4,5))
print(a.mean(axis=0))
print(a.mean(axis=1))
#[ 7.5 8.5 9.5 10.5 11.5]
#[ 2. 7. 12. 17.]
2. 中位数 np.median
平均数是一个“虚拟”的数,是通过计算得到的,不是原始数据,反映总体的平均水平,而中位数是一个不完全“虚拟”的数,反映总体的中等水平
a = np.array([1,3,5,7,8]) #奇数个
print(np.median(a))
#5.0
a = np.array([1,3,5,7,8,10]) #偶数个
print(np.median(a))
#6.0
3. 标准差 ndarray.std(方差的算术平方根)
a = np.array([1,3,5,7,8,10])
print(a.std())
a_std = (np.sum((a - a.mean())**2)/ a.size)**0.5 #计算公式
print(a_std)
#3.0368111930480994
#3.0368111930480994
4. 方差 ndarray.var()
a = np.array([1,3,5,7,8,10])
print(a.var())
a_var = np.sum((a - a.mean())**2)/ a.size #计算公式
print(a_var)
#9.222222222222221
#9.222222222222221
5. 求最大值 ndarray.max() 求最小值 ndarray.min() 求和 ndarray.sum()
以上计算参数axis同样适用
6. 加权平均值 numpy.average()
numpy.average(a,axis=None,weights=None,returned=False)
参数weights:权重,默认为1,可以设置为数组
a = np.array([85,90,95])
weights = np.array([0.2,0.3,0.5])
print(np.average(a,weights=weights))
#91.5
7. 变异系数:当需要比较两组数据离散程度大小时,如果两组数据的测量尺度太大,直接使用标准差来进行比较不合适,此时就需要用到变异系数,它是原始数据标准差和平均数之比
8. numpy结构化数据类型
teacher = np.dtype([('name',np.str_,2),('age','i1'),('salary','f4')]) #i1和int8同理(1表示1个字节)
b = np.array([('wl',32,8000.00),('lh',28,7000.00)],dtype=teacher)
print(b)
print(b['name'])
#[('wl', 32, 8000.) ('lh', 28, 7000.)]
#['wl' 'lh']
—int8的取值范围:-128~127
—创建字符串类型数组(numpy.str_)时,会取最大长度,当修改内部元素长度大于最大长度时,超过部分舍去
—object数据类型可以接受可变长度的字符,但是不能无脑用,因为可变长度虽然灵活但效率较低,定长不灵活但效率高
9. 文件操作
—读取普通文件,可以不设置分隔符,但读取csv文件时,要设置分隔符为“,”(因为csv默认为,号)
10. numpy随机数
10.1 numpy.random.randn(d0,d1,d2,...,dn)
—randn函数根据给定的维度(dn)生成[0,1)之间的数据,左闭右开,返回值为指定维度的array
a = np.random.randn(4,2)
print(a)
#[[-2.19947076 -1.05705067]
# [-1.28015005 0.94811252]
# [ 1.3575236 -2.44229682]
# [-0.50427907 1.62729183]]
10.2 numpy.random.randint(low ,high=None, size=None,dtype='')
—返回随机整数,范围区间为[low,high),左闭右开,high没有填写时,默认范围为[0,low),size为数组的维度大小,没有填写默认为1,默认数组类型为int
10.3 numpy.random.sample(size=None)
—返回半开区间内的随机浮点数[0.0, 1.0]
10.4 随机种子np.random.seed()
—使用相同的seed()值,则每次生成的随机数都相同,使得随机数可预测,但是需要每次生成都调用一次,表示种子相同,从而生成的随机数相同
10.5 正态分布
numpy.random.normal(loc = 0.0, scale = 1.0, size=None)
—loc是浮点型,指定均值μ,scale是浮点型,指定标准差,size为维度大小
11. 其他函数
11.1 numpy.resize(array,shape)有返回值,返回复制内容,如果维度不够,会使用原数据补齐
ndarray.resize(shape,refcheck=False)修改原数组,不返回数据,如果维度不够,用0补齐
11.2 numpy.append(array,values,axis=None)
—array为原数组,values是要添加的值,需要和原数组形状一致,axis默认为None,不管原数组是几维,返回的均是一维数组,当axis=0追加的值会被添加到行,而列数不变,当axis=1时正相反
11.3 numpy.insert(array, obj, values, axis)
—沿指定的轴,在给定索引值前一个位置插入相应的值,如果没有提供轴,则输入的数组被展开为一维数组
—array为原数组,obj为索引值,values为插入的值,axis为轴
11.4 numpy.delete()
—删除数组中的指定子数组,并返回一个新数组,与inset()函数相似
11.5 numpy.argwhere()
—返回数组中非0元素的索引,若是多维数组则返回行、列索引组成的坐标,括号内可以添加条件
x = np.arange(6).reshape((2,3))
y = np.argwhere(x>1)
print(y,y.shape)
#[[0 2]
# [1 0]
# [1 1]
# [1 2]] (4, 2)
11.6 去重函数:numpy.unique(arr,return_index,return_inverse,return_counts)
—return_index为True时,返回去重后数组中每个元素在原数组第一次出现的索引值
—return_counts为True时,返回重复的次数
—return_inverse为True时,返回去重数组的下标
11.7 排序函数:numpy.sort(arr,axis,kind,order)
—排序并返回一个数组副本,kind默认为quicksort(快速排序),如果数组设置了字段,order表示要排序的字段,axis默认为按最后一个轴排序
a = np.array([[3,5,1],[7,4,6]])
print(np.sort(a))
print(a)
#[[1 3 5]
# [4 6 7]]
#[[3 5 1]
# [7 4 6]]
因为原来数组不改变,如果想要用排序后的数组需要赋值