第⼆章NumPy数值计算基础第⼆章 NumPy数值计算基础
2.1掌握Numpy数组对象ndarray
2.1.1创建数组对象
2.数组创建
#创建数组并查看数组属性
import numpy as np
arr1=np.array([1,2,3,4])
print(arr1)
arr2=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(arr2)
print(arr2.shape)
print(arr2.dtype)
print(arr2.size)
#重新设置数组的shape属性
arr2.shape=4,3
print(arr2)
#使⽤arange函数创建数组
np.arange(0,1,0.2)#通过指定起点和终点,步长来创建⼀维数组
#linspace创建⼀维数组
np.linspace(0,1,12)#通过指定起点、终点和元素个数来创建⼀维数组
#logspace函数与linspace类似,它创建的是等⽐数列
np.logspace(0,1,12)
<(3)#主对⾓线元素均为1,其他元素均为0
np.diag((1,2,3,4))#除对⾓线以外的元素均为0,对⾓线元素可以是1或者其他值
#数组类型转换
np.float64(43)
np.int8(23.0)
np.bool(0)
np.float(False)
2.1.2⽣成随机数
#random函数是最常见的⽣成随机数的⽅法
np.random.random(10)
#rand可以⽣成服从均匀分布的随机数
np.random.rand(2,3)
#randn函数可以⽣成服从正态分布的随机数
np.random.randn(10,5)
#randint函数可以⽣成给定上下限范围的随机数
np.random.randint(2,10,size=[2,3])
2.1.3 通过索引访问⼀维数据
1.⼀维数组的索引
arr=np.arange(10)
print(arr)
arr[6]
arr[1:5]#包括arr[1],不包括arr[5]
rr[:5]#从arr[0]开始
arr[3:4]=101
arr[1:-1:2]#2表⽰隔⼀个元素取⼀个元素
arr[-1:1:-2]#步长为负数时,开始下标必须⼤于结束下标
2.多维数组的索引
arr=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
arr[1,2:4]#返回第1⾏中第2和第3个元素
#从两个序列中的对应位置取出两个整数来组成下标
arr[[(0,1),(2,3)]]
arr[1:,(1,2,3)]
2.1.4改变数组形态
#改变数组形状
arr=np.arange(12)
arr.shape
#查看数组维度
#使⽤ravel函数展平数组
arr.ravel()
#使⽤flatten函数展平数组
arr=np.arange(16).reshape(2,8)
arr.flatten()#横向展平
arr.flatten('F')#纵向展平
#使⽤hstack函数实现数组横向组合
arr=np.arange(12).reshape(3,4)
arr2=arr*3
linspace numpynp.hstack((arr,arr2))
#使⽤vstack函数实现数组纵向组合
np.vstack((arr,arr2))
#使⽤concatenate函数组合数组
#使⽤hsplit实现数组横向分割
arr=np.arange(12).reshape(3,4)
np.hsplit(arr,2)
#使⽤vsplit函数对数组实现纵向切割
np.vsplit(arr,3)
#使⽤split可以实现数组分割,axis=1时可以进⾏横向切割,axis=0时进⾏纵向切割np.split(arr,2,axis=1)
2.2 掌握Numpy矩阵与通⽤函数
2.2.1创建NumPy矩阵
#使⽤max和matrix函数创建矩阵
import numpy as np
matrl=np.mat("1 2 3;4 5 6;7 8 9")
matr2=np.matrix([[1,2,3],[4,5,6],[7,8,9]])
#使⽤bmat函数创建矩阵
(3)
arr2=arr1*3
np.bmat("arr1 arr2;arr1 arr2")
#矩阵运算
arr1+arr2
arr1-arr2
arr1*arr2
np.multiply(arr1,arr2)#矩阵对应元素相乘结果
#查看矩阵属性
arr1.T#转置
arr.H#共轭转置
arr.I#逆矩阵
arr.A#返回⼆维矩阵视图
2.2.2掌握ufunc函数
1.常⽤的ufunc函数运算
#数组的四则运算
x=np.array([1,2,3])
y=np.array([4,5,6])
print(x+y)
x-y
x*y
x/y
x**y#数组幂运算
#数组的⽐较运算
x<y
np.all(x==y)
np.any(x==y)
2.ufunc函数的⼴播机制
#⼀维函数的⼴播机制
arr1=np.array([[0,0,0],[1,1,1],[2,2,2],[3,3,3]])
arr2=np.array([1,2,3])
arr1+arr2
#⼆维数组的⼴播机制
arr2=np.array([1,2,3,4]).reshape((4,1))
arr1+arr2
2.3 利⽤NumPy进⾏统计分析2.
3.1读/写⽂件
#⼆进制数据存储
import numpy as np
arr=np.arange(100).reshape(10,10)#创建⼀个数组np.save("./Python数据分析与应⽤/save_arr",arr) import numpy as np
#多个数组存储
arr1=np.array([[1,2,3],[4,5,6]])
arr2=np.arange(0,1,0.1)
np.savez('./tmp/save_arr',arr1,arr2)
#⼆进制⽂件读取
#读取含有单个数组的⽂件
loaded_data=np.load("./tmp/save_arr.npy")
#读取含有多个数组的⽂件
loaded_data=np.load("./tmp/save_arr.npz")
loaded_data['arr_0']
loaded_data['arr_1']
#⽂件存储与读取
arr=np.arange(0,12,0.5).reshape(4,-1)
arr
# fmt="%d"表⽰保存为整数
np.savetxt("./",arr,fmt="%d",delimiter=",")
#读⼊的时候也需要指定逗号分割
loaded_data=np.loadtxt("./",delimiter=",")
print(loaded_data)
#使⽤genfromtxt函数读取数组
load_fromtxt("./",delimiter=",")
print(load_data)
2.3.2使⽤函数进⾏简单的统计分析
1、排序
#使⽤sort函数进⾏排序
np.random.seed(42)#设置随机种⼦
arr=np.random.randint(1,10,size=10)
print(arr)
arr.sort()#直接排序
arr=np.random.randint(1,10,size=(3,3))#⽣成三⾏三列的随机数组arr.sort(axis=1)#沿着横轴排序
arr.sort(axis=0)#沿着纵轴排序
#使⽤argsort函数进⾏排序
arr=np.array([2,3,6,8,0,7])
print(arr)
#使⽤lexsort函数进⾏排序
a=np.array([3,2,6,4,5])
b=np.array([50,30,40,20,10])
c=np.array([400,300,600,100,200])
d=np.lexsort((a,b,c))
print(list(zip(a[d],b[d],c[d])))
2、去重与重复数据
#数组内数据去重
names=np.array(['⼩明','⼩黄','⼩花','⼩兰','⼩明'])
print(names)
print(np.unique(names))
ints=np.array([1,2,3,4,4,5,6,6,7,8,8,9,10])#创建数值型数据
print(ints)
print(np.unique(ints))
#使⽤tile函数实现数据重复
arr=np.arange(5)
print(arr)
print(np.tile(arr,3))#参数代表重复的次数
#使⽤repeat函数实现数据重复
np.random.seed(42)
arr=np.random.randint(0,10,size=(3,3))
print(arr)
3、常⽤的统计函数
# NumPy中常⽤统计函数的使⽤
arr=np.arange(20).reshape(4,5)
print(arr)
#计算数组的和
np.sum(arr)
arr.sum(axis=0)#沿着纵轴求和
arr.sum(axis=1)#沿着横轴求和
#计算数组标准差
np.std(arr)
#计算数组⽅差
np.var(arr)
#计算数组最⼩值
np.min(arr)
#返回数组最⼩元素的索引
np.argmin(arr)
#返回数组最⼤元素的索引
np.argmax(arr)
#cumsum和cumprod函数的使⽤
arr=np.arange(2,10)
print(arr)
np.cumsum(arr)#计算所有元素的累计和
np.cumprod(arr)#计算所有元素的累计积
2.3.3任务实现
任务:读取iris数据集中花萼长度数据,并对其进⾏统计分析
#读取⽂件
iris_sepal_length=np.loadtxt("C:/Users/ljy15/Python数据分析与应⽤/Python数据分析与应⽤数据/第2章/任务程序/data/iris_sepal_length.csv",delimiter=",") print(iris_sepal_length)
iris_sepal_length.sort()#排序
import numpy as np
print(np.unique(iris_sepal_length))#去除重复值
np.sum(iris_sepal_length)
np.cumsum(iris_sepal_length)
np.std(iris_sepal_length)
np.var(iris_sepal_length)
np.min(iris_sepal_length)
np.max(iris_sepal_length)
实训
1、创建数组并进⾏运算
#创建⼀个数值范围为0~1,间隔为0.01的数组
arr=np.arange(0,1,0.01)
#创建100个服从正态分布的随机数
arr1=np.random.randn(10,10)
arr1

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。