大纲:

文章目录

  • 大纲:
  • 1.numpy基本使用
    • 1.1读取数据
    • 1.2创建数组
      • 1.2.1使用array函数创建数组
      • 1.2.2使用arange函数生产数组
      • 1.2.3使用zeros函数生产全0数组
    • 1.3查看数据集的相关属性
  • 2.数据操作
    • 2.1数据的合并
      • 2.1.1上下合并
      • 2.1.2左右合并
    • 2.2数据的切片
      • 2.2.1一维数组
      • 2.2.2二维数组
        • 2.2.2.1获取单行数据
        • 2.2.2.2获取多行数据
        • 2.2.2.3获取某个元素
        • 2.2.2.4获取任意范围的数据
      • 2.2.3练习
    • 2.3数据的去重
      • 2.3.1删除重复的行
      • 2.3.2删除重复的列
      • 2.3.3练习
    • 2.4通用函数
      • 2.4.1 abs函数的使用
      • 2.4.2 sqrt函数的使用
      • 2.4.3 exp函数的使用
      • 2.4.4 modf函数的使用
  • 3.删除指定的行或列
    • 3.1删除指定的行
    • 3.2删除指定的列
    • 3.3练习
  • 4.统计函数介绍
  • 5.dot的使用
  • 6.线性代数函数
  • 7.生成自己的数据集
    • 7.1生成随机的符合正态分布的数据
      • 7.1.1 rand函数
      • 7.1.2 randint函数
      • 7.1.3 normal函数
    • 7.2生产均匀间隔的数据
      • 7.1.3 normal函数
    • 7.2生产均匀间隔的数据

1.numpy基本使用

1.1读取数据

在实际开发中,我们需要从文件中读取数据,并进行处理。在numpy中,提供了一系列函数从文件中读取内容并生成矩 阵,对于txt,csv格式的文件,常用的函数为loadtxt().

#文件的读取
import numpy as np
data = np.loadtxt("D:\\桌面\\本学期课程\\BeijingPM2.5.csv",delimiter=",",skiprows=1,dtype=float)
data

注意:

​ delimiter:字段间隔符

​ skiprows:省略的行

​ dtype:数据类型

运行截图:

1.2创建数组

1.2.1使用array函数创建数组

#使用array创建数组
data1 = np.array([1,2,3])
print(data1)

运行截图:

data2 = np.array(list('abcd'))
print(data2)

运行截图:

data3 = np.array([[1,2],[3,4]])
print(data3)

运行截图:

1.2.2使用arange函数生产数组

#使用arange函数生成数组
a = np.arange(10) #生成0-9的数组
print(a)

运行截图:

x = np.arange(10,20,2) #生成10-20之间步长为2的一维数组
print(x)

1.2.3使用zeros函数生产全0数组

运行截图:

#使用zero函数生成全0数组
a = np.zeros(10,dtype=int)
print(a)

运行截图:

b = np.zeros((4,4),dtype=float) #生成一个四行四列的二维数组
print(b)

运行截图:

1.3查看数据集的相关属性

实例1:

import numpy as np
data = np.loadtxt("D:\\桌面\\本学期课程\\BeijingPM2.5.csv",delimiter=",",skiprows=1,dtype=float)
print(data.shape) #计算数据的形状
print(data.dtype)#查看数据的类型
print(data.T)#转置数据集
print(data.ndim)#查看数据集的维度

运行截图:

实例2:

import numpy as np
a = np.arange(15)
print(a)
b = a.reshape(3,5)#改变维度
print(b)
print(b.ndim)

运行截图:

2.数据操作

2.1数据的合并

2.1.1上下合并

方法1:np.vstack((data1,data2))

方法2:np.row_stack((data1,data2))

#上下合并
A = np.array([[0,1,2,3],[4,5,6,7],[8,9,10,11]])
B = np.array([[12,13,14,15],[16,17,18,19]])
row_AB = np.row_stack((A,B))
print(row_AB)

运行截图:

2.1.2左右合并

方法1:np.hstack((data1,data2))

方法2: np.column_stack((data1,data2))

#左右合并
A = np.array([[0,1,2,3],[4,5,6,7],[8,9,10,11]])
B = np.array([[12],[13],[ 14]])
col_AB = np.column_stack((A,B))
print(col_AB)

运行截图:

2.2数据的切片

数组的内容可以通过索引或切片来获取,与 Python 中 list 的切片操作一样。数组可以基于 0 - n 的下标进行索引, 设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。

2.2.1一维数组

一维数组的切片方法完全同列表切片

#一维数组的切片
import numpy as np
a = np.array([5,6,7,8,9]) #创建一个一维数组
print("获取第一个位置元素:",a[0])#获取第一个位置元素
print("获取倒数第一个元素:",a[-1])#获取倒数第一个元素
print("获取第二个和第三个元素:",a[1:3])
print("获取所有的元素:",a[:])

运行截图:

2.2.2二维数组

我们以一个6*6的数组a为例来讲解二维数组如何切片:

import numpy as np
a = np.arange(1,37).reshape((6,6))
print(a)

运行截图:

我们可以给此数组a建立索引:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JnkNg63D-1663662723462)(D:/Users/tianzi/Pictures/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/numpyback1.png)]

2.2.2.1获取单行数据

import numpy as np
#获取单行数据
a = np.arange(1,37).reshape(6,6)
print(a)
#获取单行数据
print("获取第一行数据:",a[0])
print("获取第一行数据:",a[-6])

运行截图:

2.2.2.2获取多行数据

import numpy as np
a = np.arange(1,37).reshape(6,6)
print(a)
#获取多行数据
print("获取多行数据:",a[[2,3,4]])

运行截图:

2.2.2.3获取某个元素

import numpy as np
a = np.arange(1,37).reshape(6,6)
print(a)
#获取某个元素
print("获取第四行第五列的数据:",a[3,4])

运行截图:

2.2.2.4获取任意范围的数据

import numpy as np
a = np.arange(1,37).reshape(6,6)
print(a)
#获取任意范围的数据
#获取第2-4行,3-5列的数据
print("获取第2-4行,3-5列的数据",a[1:4,2:5])
print("获取前三行数据",a[0:3,:])
print("获取第2-5列数据:",a[:,1:5])

运行截图:

2.2.3练习

将BeijingPM2.5.csv文件的样本数据切割为训练集(70%)和测试集(30%),并将训练集中的特征和目标(PM2.5)切割开。

参考答案:

import numpy as np
data=np.loadtxt("D:\\桌面\\本学期课程\\BeijingPM2.5.csv",delimiter=",",skiprows=1,dtype=float)
train_num=int(data.shape[0]*0.7)
test_num=data.shape[0]-train_num
train_data=data[:train_num,:] # 训练集
test_data=data[train_num:,:] # 测试集
x_train=train_data[:,:-1] # 训练集中的特征值数据
y_train=train_data[:,-1] # 训练集中的目标值数据

2.3数据的去重

去除数据集中重复的数据 ,可以使用unique方法,当axis=0时,按行删除。当axis=1时,按列删除。

2.3.1删除重复的行

data = np.unique(data,axis=0)

#删除重复的行
a = np.array([[1,2,3],[4,5,6],[1,2,3],[4,5,6]])
print(a)
print("修改后的数据:")
b = np.unique(a,axis=0)
print(b)

运行截图:

2.3.2删除重复的列

data = np.unique(data,axis=1)

#删除重复的列
b = np.array([[1,5,5],[2,3,3],[3,6,6]])
print(b)
print("修改后的数据:")
c = np.unique(b,axis=1)
print(c)

运行截图:

2.3.3练习

(1)请创建数组A和B,A为2行5列的数组,取值1-10,B为5行5列的数组,取值6-30.

(2)对A和B进行上下合并,得到数组C

(3)对数组C进行按行去重,得到新的数组D,打印D

参考答案:

import numpy as np
# 请创建数组A和B,A为2行5列的数组,取值1-10,B为5行5列的数组,取值6-30.
A = np.arange(1,11).reshape(2,5)
print("打印A数组:")
print(A)
B = np.arange(6,31).reshape(5,5)
print("打印B数组:")
print(B)
#对A和B进行上下合并
print("上下合并A和B得到C:")
C = np.row_stack((A,B))
print("打印C数组:")
print(C)
#对C数组按行去重
D = np.unique(C,axis=0)
print("去重后的数组D:")
print(D)

运行截图:

2.4通用函数

​ 通用函数是一种对ndarry中的数据执行元素级运算的函数,可以看作是简单函数(接受一个或多个标量值,并产生 一个或多个标量值)的矢量化包装器。

2.4.1 abs函数的使用

print(np.abs(12.0))
print(np.abs(12))
print(np.abs(-10))
print(np.abs(5-4j))

运行截图:

2.4.2 sqrt函数的使用

import numpy as np
print(np.sqrt(4))

运行截图:

2.4.3 exp函数的使用

import numpy as np
print(np.exp(2))

运行截图:

2.4.4 modf函数的使用

import numpy as np
print(np.modf([1.5,2.9]))

运行截图:

3.删除指定的行或列

3.1删除指定的行

使用 np.delete(数组,索引,axis=0) 可以进行按行删除。

#删除指定的行
c = np.arange(1,26).reshape(5,5)
print(c)
print("删除第一行:")
m = np.delete(c,0,axis=0)
print(m)
print("删除第2,3行的数据:")
n = np.delete(c,[1,2],axis=0)
print(n)

运行截图:

3.2删除指定的列

使用 np.delete(数组,索引,axis=1) 可以进行按列删除。

arr1=np.arange(1,20,2).reshape(2,5)
print(arr1)
print("删除第一列的数据:")
arr2 = np.delete(arr1,0,axis=1)
print(arr2)
print("删除第1,3列的数据")
arr3 = np.delete(arr1,[2,4],axis=1)
print(arr3)

运行截图:

3.3练习

问题:灰色部分的字段对PM2.5的影响没有或者轻微。考虑将其从数据集中删除。

参考答案:

import numpy as np
data = np.loadtxt("D:\\桌面\\本学期课程\\BeijingPM2.5.csv",delimiter=",",skiprows=1,dtype=float)
#删除无用的列
data = np.delete(data,[0,1,2,3,4,9,10,13,14],axis=1)
print(data)

运行截图:

4.统计函数介绍

备注:axis = 0:按列求。axis = 1:按行求。如果不设置axis参数,则默认求数据集中所有数的相关值 举例:

x = np.arange(18).reshape(3,6)
print(x.mean()) # 计算整个数组的平均值 # 8.5
print(x.mean(axis=0)) # 计算各列的平均值 # array([ 6., 7., 8., 9., 10., 11.])
print(x.mean(axis=1)) # 计算各行的平均值 # array([ 2.5, 8.5, 14.5])
print(x.std()) # 计算整个数组的标准差 #5.188127472091127
print(x.max()) # 计算整个数组的最大值 #17

运行代码:

练习:

求北京PM2.5数据集中PM10、SO2、NO2、CO的平均值、总和、最大值、最小值。

参考代码:

import numpy as np
data=np.loadtxt("D:\\桌面\\本学期课程\\BeijingPM2.5.csv",delimiter=",",skiprows=1,dtype=float)
a=data[:,:9] # 获取PM10、SO2、NO2、CO数据集
print(a.mean(axis=0)) # 计算均值
print(a.sum(axis=0)) # 计算总和
print(a.max(axis=0)) # 计算最大值
print(a.min(axis=0)) # 计算最小值

运行截图:

5.dot的使用

线性代数中矩阵乘法: np.dot(A,B)或A.dot(B)

举例:

import numpy as np
matrix1 = np.array([[1, 2, 3], [4, 5, 6]])
matrix2 = np.array([[1, 2], [3, 4], [5, 6]])
multi = np.dot(matrix1, matrix2)
print(multi)

运行截图:

6.线性代数函数

NumPy.linalg中有一组标准的矩阵分解运算以及诸如求逆和行列式之类的函数。

使用方法举例:

A=np.array([[1,3],[2,8]])
x=np.linalg.det(A)
print(x)

7.生成自己的数据集

7.1生成随机的符合正态分布的数据

numpy中的random模块

使用举例:

7.1.1 rand函数

这个函数的参数是数组的维度,取值范围是 [0,1)

x1 = np.random.rand(10)
x2 = np.random.rand(2,3)
print(x1)
print(x2)

运行截图:

7.1.2 randint函数

numpy.random.randint(low, high=None, size=None)

返回随机整数,范围区间为[low,high),包含low,不包含high参数:low为最小值,high为最大值,size为数组维 度大小.

x1= np.random.randint(0,6,10)
x2= np.random.randint(0,9,size=(2,2))
print(x1)

运行截图:

7.1.3 normal函数

x = np.random.normal(0, 0.04, 20)#生成均值为0, 方差为0.04的20个值 t
print(x)

运行截图:

7.2生产均匀间隔的数据

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

其中:

start:起始值

stop:结束值

num:样本数

endpoint:是否包含stop的值

restep:返回步长

dtype:数据类型

举例:

x=np.linspace(2.0, 3.0, num=5)
print(x)

运行截图:

为最大值,size为数组维 度大小.

x1= np.random.randint(0,6,10)
x2= np.random.randint(0,9,size=(2,2))
print(x1)

运行截图:

[外链图片转存中…(img-UwptSyaB-1663662723501)]

7.1.3 normal函数

x = np.random.normal(0, 0.04, 20)#生成均值为0, 方差为0.04的20个值 t
print(x)

运行截图:

[外链图片转存中…(img-nm1dUOpp-1663662723502)]

7.2生产均匀间隔的数据

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

其中:

start:起始值

stop:结束值

num:样本数

endpoint:是否包含stop的值

restep:返回步长

dtype:数据类型

举例:

x=np.linspace(2.0, 3.0, num=5)
print(x)

运行截图:

Numpy入门详细教程相关推荐

  1. numpy入门详细教程(一)

    本讲主要介绍对numpy库和numpy库的N维数组对象:ndarray的基本了解.更多内容请看numpy入门详细教程(二) numpy: NumPy是一个开源的Python科学计算基础库,包含: • ...

  2. python数据科学系列:numpy入门详细教程

    导读 python数据科学基础库主要是三剑客:numpy,pandas以及matplotlib,每个库都集成了大量的方法接口,配合使用功能强大.平时虽然一直在用,也看过很多教程,但纸上得来终觉浅,还是 ...

  3. Pandas入门详细教程

    作者:luanhz 来源:小数志 导读 本文主要是对pandas进行入门详细介绍,通过本文你将系统性了解pandas为何会有数据分析界"瑞士军刀"的盛誉. 行文二级目录 01 关于 ...

  4. python数据科学系列:pandas入门详细教程

    导读 前2篇分别系统性介绍了numpy和matplotlib的入门基本知识,今天本文自然是要对pandas进行入门详细介绍,通过本文你将系统性了解pandas为何会有数据分析界"瑞士军刀&q ...

  5. spring入门详细教程(五)

    前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...

  6. Spring入门详细教程(四)

    前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...

  7. Spring入门详细教程(三)

    前言 本篇紧接着spring入门详细教程(二),建议阅读本篇前,先阅读第一篇和第二篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/101 ...

  8. Spring入门详细教程(二)

    前言 本篇紧接着spring入门详细教程(一),建议阅读本篇前,先阅读第一篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/1016553 ...

  9. ThinkJS框架入门详细教程(二)新手入门项目

    一.准备工作 参考前一篇:ThinkJS框架入门详细教程(一)开发环境 安装thinkJS命令 npm install -g think-cli 监测是否安装成功 thinkjs -v 二.创建项目 ...

最新文章

  1. 如流智会2021:技术结合场景 让企业知识懂员工
  2. 清除浏览器缓存之后为什么还是显示旧的html页面_H5缓存机制浅析-移动端Web加载性能优化...
  3. 回顾2011年最热门的开源PHP项目
  4. Python 中的闭包、匿名函数、decorator 装饰器与python的偏函数
  5. 推荐安装的Visual Studio Extensions
  6. Java代码总结【1】_查询手机号码归属地
  7. php get获取cookie值,golang web开发获取get、post、cookie参数
  8. python面向对象中的私有属性和私有化方法
  9. 【codevs1722】【NOI1997】最优乘车,单元最短路?
  10. vsftpd虚拟用户使用实验报告
  11. Python进阶(十)多进程multiprocessing和subprocess模块
  12. 非要自己开发一个测试工具不可
  13. 职业生涯规划不会做?首先要知道职引生涯规划!
  14. 跟着小皮老师了解Go语言LiteIDE详细使用教程❤
  15. 苹果MFI认证步骤汇总
  16. 电商平台后台管理系统--->系统详细设计(订单管理模块)
  17. 陷入瓶颈的中国航空WiFi,还有可能赶英超美吗?
  18. Windows下网络共享文件夹挂载到wsl系统
  19. ADI实验室电路:带抗混叠滤波器的宽带接收机
  20. 杭电ACM 1000题

热门文章

  1. 【教程】关于各种USB启动模式的解读 MBR、PBR
  2. upc 8262: LARGEST POINT
  3. provide和inject的使用方法
  4. 九、多重曝光 (转自 色影无忌)
  5. 从女友和老妈的使用角度看精确率(precision)和召回率(recall)的不同
  6. python第3周(python学习题集)
  7. html期末作业代码网页设计——火锅烧烤美食山庄(7页) HTML+CSS+JavaScript 网页设计期末作业个人主页
  8. 猜歌?没有我猜不到的歌!因为我有Python脚本!
  9. java口袋精灵怎么变强,口袋精灵OL强势来袭 教你打造最强精灵
  10. 最短路径-图-----练习力扣787. K 站中转内最便宜的航班