nmupy 数据预处理

一、ndarray——numpy中用于存储单一数据类型的数组对象(n-dimensional array object)

1、ndarray和python中的列表、元组的区别:

pyhtonnumpy
不同数据类型相同数据类型
运算速度较慢运算速度非常快
需要手动编写提供很多功能函数

2、ndarray是一个多维的数组对象,具有矢量算术运算能力和复杂的广播能力,并具有执行速度快和节省空间的优点。

3、ndarray的一个特点是同构:所有元素的数据类型必须相同

二、搜集数据

1、搜集数据的几种方式:

  • 购买
  • 爬虫
  • 开源网站下载

2、搜集数据后:

  • 数据读写
  • 数据筛选
  • 数据清洗
  • 数据可视化
三、生成array数组对象的几种方式

1、从文件中获取

import numpy as np
data = np.loadtxt("BeijingPM2.5.csv",delimiter=",",skipper=1,dtype=float)

2、使用list列表/元组

#一维列表
a = [1,2,3,4,5,]
np1 = np.array(a)
print(np1)
#[1 2 3 4 5]

#一维元组
a =1,2,3,4,5)
np1 = np.array(a)
print(np1)
#[1 2 3 4 5]

#二维
a = [[1,2],[4,5]]
np2 = np.array(a)
print(np2)
#[[1 2]
  [4 5]]

3、生成全为1的数组对象

np1 = np.ones(10)
np2 = np.ones((10,5))
np3 = np.ones_like(np2)

4、生成全为0的数组对象

np1 = np.zeros(10)
np2 = np.zeros((10,5))
np3 = np.zeros_like(np2)

5、单位矩阵

np1 = np.eye(5)
#[1 0 0 0 0
# 0 1 0 0 0 
# 0 0 1 0 0 
# 0 0 0 1 0
# 0 0 0 0 1]

6、arange

np1 = np.arange(10)
#[0 1 2 3......7 8 9]
np2 = np.arange(10,50)
#[10 11 12 .....48 49]
np3 = np.arange(10,50,2)
#[10 12 14 .... 44 46 48]
四、ndarray数组的属性和数据类型
  1. dtype:数组中数据类型,如float64(更多类型见下边表格)
  2. shape:数组的类型,如(2,3)表示2行3列
  3. ndim: 数组的维度
  4. size:数组中元素个数
  5. itemsize:元素在内存中占字节数
  6. T:转置(人工智能一些算法中常用到)

在这里插入图片描述

五、数组运算

1、数组之间的运算

#同维度
a = [4,5,6]
b = [1,2,3]
print(a + b)
#[5 7 9]
print(a - b)
#[3 3 3]
print(a * b)
#[4 10 18]
print(a / b)
#[4 2.5 2]

#不同维度(数据广播)
a = [[4,5,6],[7,,8,9]]
b = [1,2,3]
print(a - b)
#[[3 3 3]
#[6 6 6 ]]

2、数组和标量之间的运算

a = [4,5,6]
print(a * 5)
#[20 25 30]

3、numpy进行数组运算

#加
data3 = np.add(data1,datat2)
#减
data4 = np.substract(data1,datat2)
#乘
data5 = np.multiply(datat1,datta2)
#除
data6 = np.divide(data1,datat2)
六、数据不完整——数据组合

1、上下组合

data1 = data[:10]
data2 = data[10:]
data3 = np.vstack((data1,data2))
data3 = np.row_stack((data1,data2))

2、左右组合

data6 = np.hstack((data4,data5))
data6 = np.column_stack((data4,data5))
七、数据截取
#获取连续的第3-5条数据
data1 = data[2:5]
data1 = data[[2,3,4]]

#获取非连续的第2、4、6条数据
data2 = data[[2,4,6]]

#获取第四行第五列数据
data3 = data[3][4]
data3 = data[3,4]

#获取前3行数据
data4 = data[0:3,:]

#获取前3行前3列数据
data5 = data[:3,:3]

#获取2-4行,3-5列数据
data6 = data[1:4,2:5]
八、重复——数据去重

1、按行去重

np.unique(data1,axis=0)

2、按列去重

np.unique(data2,axis=1)
九、冗余——数据删除

1、按行删除

#删除第1 2 3 行
data = np.delete(data,[0,1,2],axis=0)

2、按列删除

#删除第1 2 3 列
data = np.delete(data,[0,1,2],axis=1)
十、条件查找——切片

1、查找pm2.5>50的值

pm25 = data[:,-1]
print(pm25[pm25>50])

2、查找pm2.5>50的位置

#一维
data1 = np.where(pm25>50)

#二维
data2 = np.where(data>50)

3、将pm25<10的值替换为10

#<10的替换为10,不<10的保持pm25
data1 = np.where(pm25<10,10,pm25)
#不会修改原数据,另外生成一份数据

4、argwhere

data1 = np.argwhere(pm25>50)
#区别:返回格式不一样,尤其是二维的时候,argwhere返回坐标,更清晰
十一、改变数组维度

1、展平

  • ravel :影响原始数据
  • flatten :不影响原始数据
data1 = data.rqcel()
data2 = data.flatten()

2、转置

data1 = data.transpose()

3、改变数组格式
reshape :不影响原始数据
resize :影响原始数据

data1 = data.reshape((5,4))

#设置-1可以自动变化行和列,如下,这个时候会自动变为10行
data2 = data.reshape(-1,2)

data3 = data.resize((5,4))
十二、数据保存至文件

1、np.save(string,ndarray)
将数据保存在string.npy文件中,无压缩

np.save("data1",data1)

2、np.savez(string,ndarray1,ndarray2,ndarray3…)
将数据保存在string.npz文件中,有压缩

np.savez("data2",data2)

3、np.savetxt(string,ndarray,fmt,newline=’\n’)
数据保存在txt文件中

#数据共四列,每列之间逗号分开
np.savetxt("data3.txt,data2,fmt="%$f,%f,%f,%f"),newline='\n')
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值