数据科学库——numpy
为什么要学习numpy
numpy非常快速和方便,也是科学计算的基础库
什么是numpy
一个在python中做科学计算的基础库,重在数值计算。也是大部分python科学计算库的基础库,多用于在大型,多维数组上执行数值运算
numpy基础
numpy创建数组(矩阵)
三种方法使用numpy生成数组
import numpy as np
a=np.array([1,2,3,4,5])
print(a)
print(type(a))
b=np.array(range(1,6))
print(b)
print(type(b))
c=np.arange(1,6)
print(c)
print(type(c))
#以上三种 a b c 内容相同

numpy中常见的更多数据类型

数据类型的操作
#numpy中指定数据类型
d=np.array(range(1,6),dtype="i1")
print(d)
print(d.dtype)
print("*"*100)
#numpy中的bool类型
e=np.array([1,1,0,0,1],dtype=bool)
print(e)
print(e.dtype)
print("*"*100)
#调整数据类型
e1=e.astype("int8")
print(e1)
print(e1.dtype)
print("*"*100)
#numpy中的小数
f=np.array([random.random() for i in range(10)])
print(f)
print(f.dtype)
#保留2位小数
f1=np.round(f,2)
print(f1)

numpy中数组的形状
查看数组的形状,使用shape方法
修改数组的形状,使用reshape方法
t1=np.arange(12)
print(t1)
print(50*"*")
print(t1.reshape(3,4))
print(50*"*")
t2=np.arange(24)
print(t2.reshape(2,3,4))
print(50*"*")
print(t2.reshape(4,6))

使用flatten()的方法可以进行展开:
print(t2.flatten())

numpy中数组的计算
数组和数的计算
当数组和数进行计算的时候,就是跟数组中每个数字进行操作,例如:t2+2,就是t2中每个数字都+2.
这属于广播机制
数组和数组的计算
当俩个数组的形状是一样的时候:对应位置的数字进行计算
2维数组中,当俩个数组形状不同(行数一样或者列数一样)的时候:对应维度位置数字进行计算。
t1=np.arange(0,6)
print(t1)
t2=np.arange(24).reshape(4,6)
print(t2)
print(50*"*")
print(t2-t1)


三维数组从后往前看,形状有一致的可以计算。
例如:
shape(3,3,3)和shape(3,2)是不能计算的
shape(3,3,2)和shape(3,2)是能计算的
轴(axis)
在numpy中可以理解为方向,使用0,1,2…数字表示,对于一个一维数组,只有一个0轴,对于2维数组(shape(2,2)),有0轴和1轴,对于三维数组(shape(2,2, 3)),有0,1,2轴


numpy常用方法
numpy读取数据
CSV:Comma-Separated Value,逗号分隔值文件
显示:表格状态
源文件:换行和逗号分隔行列的格式化文本,每一行的数据表示一条记录

path="文件路径"
t1=np.loadtxt(path,delimiter=",",dtype="int",unpack=True)
delimiter:指定的边界符号(csv中是逗号)
dtype:默认情况下,较大数据会使用科学计数法
unpack:默认为False,有多少数据就会有多少行,当为True的时候,每一列的数据会形成一行(相当于转置的效果)
numpy中的转置
转置是一种变换,对于numpy中的数组来说,就是在对角线方向交换数据,目的也是为了更方便的去处理数据
#二维数组实现转置以下三种方法均可
t1.transpose()
#转置和交换轴的效果是一样的
t1.swapaxes(1,0)
t1.T
numpy索引和切片
import numpy as np
t1=np.arange(24).reshape(4,6)
print(t1)
print(50*"*")
#取第三行
print(t1[2])
print(50*"*")
#取多行
print(t1[2:])
print(50*"*")
#取不连续的多行
print(t1[[0,2,3]])
#通用的写法 t1[行,列]
#print(t1[1,:])或者t1[2:,:]
#取列
print(50*"=")
print(t1[:,0])
#取连续的多列
print(50*"=")
print(t1[:,2:])
#取不连续的多列
print(50*"=")
print(t1[:,[0,2,3]])
#取行和列 取第三行 第四列
print(t1[2,3])
#取多行多列 取第二行到第四行 第四列到第六列
print(50*"=")
print(t1[1:4,3:6])
#取多个不相邻的点
print(50*"=")
print(t1[[0,2],[0,1]])

numpy中数值的修改
import numpy as np
t1=np.arange(24).reshape(4,6)
print(t1)
print("========")
#布尔索引
print(t1<10)
#小于10的值全部给0
t1[t1<10]=0
print("========")
print(t1)
print("========")
#打印出所有大于20的数
print(t1[t1>20])

numpy中三目运算符
#小于10 的数全部取0,大于10的数全部取10
print(np.where(t1<10,0,10))

numpy中的裁剪(clip)
#小于10的全部取10,大于10的全部取18
print(t1.clip(10,18))

numpy中的nan和inf
什么时候numpy中会出现nan:
当我们读取本地的文件为float的时候,如果有缺失,就会出现nan
当做了一个不合适的计算的时候(比如无穷大(inf)减去无穷大)
inf(-inf,inf):infinity,inf表示正无穷,-inf表示负无穷
什么时候回出现inf包括(-inf,+inf)
比如一个数字除以0,(python中直接会报错,numpy中是一个inf或者-inf)
numpy中的nan的注意点

numpy中数组的拼接
#竖直拼接(t1在上,t2在下)
np.vstack(t1,t2)
#水平拼接(t1在左,t2在右)
np.hstack(t1,t2)
在这里插入代码片
numpy中数组的行列交换
import numpy as np
t1=np.arange(24).reshape(4,6)
print(t1)
print("========")
#第二行和第三行交换
t1[[1,2],:]=t1[[2,1],:]
print(t1)
print("========")
#第二列和第三列交换
t1[:,[1,2]]=t1[:,[2,1]]
print(t1)

numpy生成随机数

numpy中更多好用的方法
获取最大值最小值的位置
np.argmax(t,axis=0)
np.argmin(t,axis=1)
创建一个全0的数组: np.zeros((3,4))
创建一个全1的数组:np.ones((3,4))
创建一个对角线为1的正方形数组(方阵):np.eye(3)
numpy常用统计方法

本文详细介绍了numpy库在Python中的重要性,包括如何创建和操作数组、数据类型、数组形状、计算、转置、索引、切片、数值修改等基础知识,并深入探讨了广播机制、轴的概念、常用方法如读取数据、数组拼接、行列交换等。此外,还讲解了numpy中的特殊值nan和inf的处理,以及随机数生成和统计方法。通过实例解析,帮助读者全面理解并熟练运用numpy进行科学计算。

1031

被折叠的 条评论
为什么被折叠?



