IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python-数据分析工具-numpy -> 正文阅读

[Python知识库]python-数据分析工具-numpy

1 数组的索引和切片

1.1 一维数组索引和切片

import numpy as np
# 生成等差array
data1 = np.arange(1,10,2)
data1 #结果 array([1, 3, 5, 7, 9])
# 1.一维数组索引
data1[1] #结果 3
# 2. 一维数组切片
data1[0:3] #结果 array([1, 3, 5])
# 3. 一维数组切片
data1[::2] #结果 array([1, 5, 9])
# 4.一维数组索引
data1[-1]#结果 9

1.2 多维数组

2 布尔索引

3 值的替换

4 广播机制

5 形状操作

5.1 数组叠加

hstack:代表水平方向叠加,要想叠加成功,行必须一致
vstack:代表垂直方向叠加,要想叠加成功,列必须一致
concatenate:手动指定叠加方向,axis=0 表示垂直方向叠加,axis=1表示水平方向叠加,axis=None表示叠加为一维数组。

import numpy as np
h1 = np.random.randint(0,10,size=(3,1))
h1 #结果:
'''array([[4],
       [8],
       [2]])'''
       
h2 = np.random.randint(0,10,size=(3,4))
h2 #结果:
'''array([[6, 9, 5, 0],
       [6, 1, 9, 4],
       [8, 8, 9, 8]])'''
h4 = np.random.randint(0,10,size=(1,4))
h4 # 结果
'''array([[2, 3, 5, 5]])'''

# 2.横向堆叠
h3 = np.hstack([h1,h2])
h3 #结果:
'''array([[4, 6, 9, 5, 0],
       [8, 6, 1, 9, 4],
       [2, 8, 8, 9, 8]])'''
       
# 3.使用concatenate进行自定义拼接
np.concatenate([h1,h2],axis=1) #横向拼接 结果:
'''array([[4, 6, 9, 5, 0],
       [8, 6, 1, 9, 4],
       [2, 8, 8, 9, 8]])'''
       
# 3.使用concatenate进行自定义堆叠
np.concatenate([h1,h2],axis=None)#拼接成一维数组 结果:
'''
array([4, 8, 2, 6, 9, 5, 0, 6, 1, 9, 4, 8, 8, 9, 8])
'''
# 3.使用concatenate进行自定义堆叠
np.concatenate([h2,h3],axis=0)#纵向拼接 结果
'''array([[6, 9, 5, 0],
       [6, 1, 9, 4],
       [8, 8, 9, 8],
       [2, 3, 5, 5]])'''

5.2 数组分割

hsplit:水平方向分割。
vsplit:垂直方向分割。
split/array_split: 自定义分割,axis=1 水平分割,axis=0 垂直方向分割。

# 4.分割-水平方向分割
h5 = np.random.randint(0,100,size=(6,4))
h5
'''array([[13,  7, 29, 65],
       [57, 50, 79, 12],
       [ 9, 16, 82, 86],
       [97, 62, 43, 92],
       [66, 21, 78, 34],
       [95, 33, 51, 63]])'''
       
np.hsplit(h5,2) # 将h5水平分割等分两个数组,被分割的列一定为指定分割数的倍数
'''[array([[13,  7],
        [57, 50],
        [ 9, 16],
        [97, 62],
        [66, 21],
        [95, 33]]),
 array([[29, 65],
        [79, 12],
        [82, 86],
        [43, 92],
        [78, 34],
        [51, 63]])]'''
np.hsplit(h5,[1,3])#将h5从下标为1、3的地方水平分割
'''[array([[13],
        [57],
        [ 9],
        [97],
        [66],
        [95]]),
 array([[ 7, 29],
        [50, 79],
        [16, 82],
        [62, 43],
        [21, 78],
        [33, 51]]),
 array([[65],
        [12],
        [86],
        [92],
        [34],
        [63]])]
'''
# 5 分割-纵向分割
np.vsplit(h5,3)
'''
[array([[13,  7, 29, 65],
        [57, 50, 79, 12]]),
 array([[ 9, 16, 82, 86],
        [97, 62, 43, 92]]),
 array([[66, 21, 78, 34],
        [95, 33, 51, 63]])]
'''
np.vsplit(h5,[1,2])
'''
[array([[13,  7, 29, 65]]),
 array([[57, 50, 79, 12]]),
 array([[ 9, 16, 82, 86],
        [97, 62, 43, 92],
        [66, 21, 78, 34],
        [95, 33, 51, 63]])]
'''
# 6 分割-自定义分割
np.split(h5,2,axis=1) #横向分割,按列分割
'''
[array([[13,  7],
        [57, 50],
        [ 9, 16],
        [97, 62],
        [66, 21],
        [95, 33]]),
 array([[29, 65],
        [79, 12],
        [82, 86],
        [43, 92],
        [78, 34],
        [51, 63]])]
'''
np.split(h5,3,axis=0)#纵向分割,按行分割
'''
[array([[13,  7, 29, 65],
        [57, 50, 79, 12]]),
 array([[ 9, 16, 82, 86],
        [97, 62, 43, 92]]),
 array([[66, 21, 78, 34],
        [95, 33, 51, 63]])]
'''

5.3 转置和轴对换

.T: T属性可对数组进行转置
.transpose:返回一个View(浅拷贝),修改返回值,会影响到原来的数组

# 7 转置
h6 = np.random.randint(0,100,size=(3,1))
h6
'''
array([[52],
       [17],
       [80]])
'''
h6.T #T属性转置
'''
array([[52, 17, 80]])
'''
h7 = h6.transpose() #浅拷贝
h7
'''
array([[52, 17, 80]])
'''

h7[0,0]=100
h6
'''
array([[100],
       [ 17],
       [ 80]])
'''

5.4 矩阵乘法(线代乘法)

# 8 矩阵乘法
h6.dot(h6.T)
'''
array([[10000,  1700,  8000],
       [ 1700,   289,  1360],
       [ 8000,  1360,  6400]])
'''

6 浅拷贝和深拷贝

6.1 View/浅拷贝

对变量进行拷贝,但是它们指向的内存空间都是相同的。
下图示意
在这里插入图片描述
在这里插入图片描述

6.2 深拷贝

对变量进行拷贝,但是它们指向的内存空间都是不相同的。
在这里插入图片描述
在这里插入图片描述

7 文件操作

7.1 文件保存

np.savetxt(frame,array,fmt=’%.18e’,delimiter=None)
frame:文件、字符串或产生器,可以是.gz或.bz2文件
array:存入文件的数组
fmt:写入文件格式.
delimiter:分割字符串,默认是空格
在这里插入图片描述
在这里插入图片描述

7.2 加载数据

loadtxt(fname, dtype=<class ‘float’>, comments=’#’, delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding=‘bytes’, max_rows=None)
fname:解析文件名,一般为csv文件
dtype:数据类型转换
comments:最开始处的注释标识
delimiter:分隔符解析
skiprows:跳过多少行

7.3 save和load可以保存和加载多维数组

np.save(fname,array):npy后缀名文件,可不设置header
np.savez(fname,array):npz后缀名文件,压缩格式,可不设置header
np.load(fname):

8 NAN和INF值处理

8.1 简介

NAN:not a number。不是一个数字的意思,但它属于浮点类型,想要进行数据操作请注意它的类型。
特点:NAN和NAN是不相等的,NAN和任何值做运算,值都为NAN。
很多时候文件中存在缺失值,读取默认用NAN代替
在这里插入图片描述
inf:Infinity,代表无穷大,属于浮点类型,np.inf代表正无穷大,-np.inf代表负无穷大。2/0
在这里插入图片描述

8.2 删除缺失值

在这里插入图片描述

8.3 替换缺失值

10 random模块

11 axis轴

12 通用函数

12.1 一元函数

12.2 二元函数

12.3 聚合函数

12.4 布尔判断

12.5 排序

12.6 其他函数

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-09 11:42:11  更:2021-09-09 11:42:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:41:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码