Python数据分析入门15

numpy基础

1.numpy简介

numpy是针对多维数组的一个科学计算的包,封装了多个用于数组间计算的函数。数组是相同数据类型的元素按一定顺序排列的组合,需要注意的是必须是相同数据类型的,比如全是整数、全是字符串或者其他。使用前需导入numpy包:import numpy as np

2.numpy 数组生成

  • 一般数组。给array函数传入一个列表或元组。传入嵌套列表或元组则为多维数组
# 无论给array传入什么类型参数,都是numpy.ndarray数据类型
arr0 = np.array([1,2,3,4])
arr1 = np.array((1,2,5))
arr2 = np.array([[1,2,3,4],[5,5,6,7],[4,5,7,8]])
arr3 = np.array(((1,2,3,4),(5,5,6,7),(4,5,7,8)))
ic(arr0,type(arr0),arr1,type(arr1),arr2,type(arr2),arr3)

在这里插入图片描述

  • arrange(start,stop,step)函数生成固定范围的随机数组:
    在这里插入图片描述
    arrange()函数默认左闭右开;3个参数分别为(开始,结束,步长),2个参数时指明start和stop,默认step为1;1个参数时指明stop,默认start=0,step=1。
  • 生成0矩阵用zeros()函数,1矩阵用ones(),单位矩阵用 eye():
    zeros()和ones()函数传入一个具体值时生成相应长度的一维数组,传入一对值时生成对应行列数的多维数组。eye()函数传入正方形边长。
    在这里插入图片描述
  • random.rand()生成(0,1)之间的随机数组
    在这里插入图片描述
  • random.randn()生成满足正态分布的数组
    在这里插入图片描述
  • np.random.randint(low,high,size)方法用于生成一定范围内的随机整数数组。
    默认左闭右开,size为生成数组的长度。2个参数时指定low和high,默认size=1;1个参数时指定high,默认low=0,size=1。size为1个具体值时生成相应长度的一维数组,为1对值时生成多维数组,注意此时size参数不能省略。

在这里插入图片描述

  • np.random.choice()方法用来从已知数组中随机选取相应大小的数组。replace参数默认True,表示允许重复选择,若为False,已知数组的长度必须大于随机选取的数组,否则会报错。如此例中,若设置replace=False,生成(2,3)的数组会报错
    在这里插入图片描述

3.numpy 数组的基本属性

  • shape:数组的形状
  • size:数组大小
  • dtype:数据类型
  • ndim:数组的维数
    在这里插入图片描述

4.numpy 数组的数据选取

“,” 为行列分隔符号,获取行数据时,获取所有列可省略"," 默认左闭右开。
在这里插入图片描述
获取列数据,":,"表示行和分隔符,不能省略,默认左闭右开。
在这里插入图片描述
获取行列数据
在这里插入图片描述

5.numpy 数据预处理

  • 数组类型转换astype()
    在这里插入图片描述
  • 缺失值处理。查找缺失值用isnan(),填充空值直接给相应位置的元素赋值
    在这里插入图片描述
  • 重复值去重,用unique
    在这里插入图片描述

6.numpy 数组重塑

  • 一维变多维。重塑后数组中值的个数等于原数组中值的个数即可
# 数组重塑,一维变多维
d = np.arange(1,13,1)
ds = d.reshape(3,4)
ic(d,ds)
# 多维变多维
ic(ds.reshape(2,6))

在这里插入图片描述

  • 数组转置
    在这里插入图片描述

7.numpy 数组合并

横向合并。与pandas不同,不需要公共列,只是简单的拼接在一起。数组横向合并(行数不变),行数必须相同。
纵向合并与横向合并相对应,纵向拼接在一起(列数不变),列数必须相同。
合并三种方法如下:

  • concatenate:以列表形式传入,axis=1横向合并,axis=0纵向合并
  • hstack:以元组形式传入,横向合并,无需指明合并方向。对应纵向合并方法为vstack
  • column_stack:以元组形式传入,横向合并,无需指明合并方向。对应纵向合并方法为row_stack
# 数组横向合并(行数不变),行数必须相同,concatenate以列表形式传入,hstack和column_stack以元组形式传入
hb1 = np.random.randint(1,6,(2,2))
hb2 = np.random.randint(1,6,(2,3))
ic(hb1,hb2)
ic(np.concatenate([hb1,hb2],axis=1),np.hstack((hb1,hb2)),np.column_stack((hb1,hb2)))

# 数组纵向合并(列数不变),列数必须相同,concatenate以列表形式传入axis=0,vstack和row_stack以元组形式传入
hb3 = np.random.randint(1,6,(1,2))
hb4 = np.random.randint(1,6,(2,2))
ic(np.concatenate([hb3,hb4],axis=0),np.vstack((hb3,hb4)),np.row_stack((hb3,hb4)))

横向合并如下:
在这里插入图片描述
纵向合并如下:
在这里插入图片描述

8.常用数据分析函数

  • 元素级函数。针对数组中的每个元素执行相同的函数操作。例如对所有元素开平方或平方
    在这里插入图片描述
  • 描述统计函数。对整个 NumPy 数组或某条轴的数据进行统计运算。例如对每行或每列求和
    在这里插入图片描述
  • 条件函数。Numpy 数组中的条件函数np.where(condition,x,y)类似于 Excel 中的if(condition,True,False)函数,如果条件(condition)为真则返回x,如果条件为假则返回y,可以嵌套使用
    在这里插入图片描述
  • 集合关系。每个数组都可以当作一个集合,集合的关系其实就是两个数组之间的关系,主要有包含(in1d)、交集(intersect1d)、并集(union1d)、差集(setdiff1d)四种
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值