数据分析的Python快速先导课 三

数据分析的Python快速先导课 三

python里面没有数组(矩阵)的概念,只有列表和元组。这就增加了时间和空间代价。这个问题由第三方包来弥补。

第三方包

  • 目前有numpy(由C实现的)和array能弥补上面的问题。array比较少用,最常用的是numpy的ndarray模块。
  • N维数组是通过Python的numpy的扩展模块udarray实现的。numpy的所有处理数据的函数都是udarray实现的。
  • np.arange其实就是对python里面range函数的重写,速度会快一点。还有int函数,重写成了np.int。实际上,np几乎把python数据分析相关的功能都重写了。
myarray1 = np.zeros(shape = (2,15), dtype = np.int)
myarray
#在这里也是把zeros函数重写了
  • 下面介绍ndarray
  1. 速度的提升- np.array是对类型进行数组转换,range()是自带的,arange是np自己写的。速度对比在这里。
    在这里插入图片描述 2. 切片: fancy index。
rand = np.random.RandomState(30)
myarray = rand.randint(0,100,size = [7,7])
#myarray
#输出
array([[37, 37, 45, 45, 12, 23,  2],
       [53, 17, 46,  3, 41,  7, 65],
       [49, 45, 61, 35, 18, 18, 76],
       [16,  6, 62, 27, 46, 45, 64],
       [62, 11, 15, 23, 13, 50, 33],
       [55, 28, 58, 91, 78, 57, 75],
       [95, 44, 37, 75, 57, 39,  9]])
#做切片
m = myarray[[1,2],[3,4]]
#第index(1)行和第(2)行的第(3)列和第(4)列。
print(m)
#输出[ 3 18]

数组计算

浅拷贝和深拷贝

python本身是引用函数类的运算,变量名里面存的是数据的地址,因此默认的是浅拷贝的情况,在直接通过变量赋值时,改变后来的会同时改变前面的,这就是浅拷贝。如果在后面加一个.copy(),两个变量各自有自己的存储空间。
比如下图:
在这里插入图片描述

数组变换

  • resize ,就地修改(inplace)
  • reshape,原先的数据不会修改
  • 轴变换:变量名.swapaxes(0,1)。第0维和第1维进行变化。不改变数组本身。可以先生成再赋值。比如变量名 = 变量名.swapaxes(0,1)这样就会变化。
  • 压平:
  • 查元素数目的时候,有函数的方式,也有属性的方式。np.shape(变量名)变量名.shape。size是元素数目,shape是几行几列。

ndarray的运算

数组的切开

myarray5 = np.arange(1,21)
#array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])
upper,lower = np.vsplit(myarray5.reshape(4,5),[3])#按照行来切切成两个部分
#upper,lower = np.hsplit(myarray5.reshape(4,5),[3])#按照列切成两个部分
print(upper)
print(lower)
#输出
[[ 1  2  3  4  5]
 [ 6  7  8  9 10]
 [11 12 13 14 15]]
[[16 17 18 19 20]]

数组的合并

  1. 按照列进行合并:保证行数一样np.hstack([第一块,第二块])
  2. 按照行进行合并:保证列数一样np.vstack([第一块,第二块])
  3. 也有比较复杂的写法,np.concatenate((第一块,第二块),axis = 0)

ndarray的安全函数

主要在于对于缺失值的处理。
在adarray里面,缺失值被定义成float函数,可以跳过,因此事可以参加运算的。

ndarray的排序

针对矩阵有行排序和列排序

  • np.sort(myarray1,axis = 0)#按列排序
  • np.sort(myarray1,axis = 1)#按行排序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值