第八周——数据分析、可视化 Day3 8.17

学习时间: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]]

因为原来数组不改变,如果想要用排序后的数组需要赋值

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值