Python_爬虫系列_4.Numpy库的学习
前言
在学习的路上,还是需要不断的坚持下来!!
一、Numpy是什么?
简单来说,NumPy是用Python进行科学计算和数据分析的基础软件包。
二、Numpy的数组
1、初步使用
代码如下(示例):
# 列表LIST
LIST = [1,3,5,7]
print(LIST)
#数组ARR
ARR = np.array([1,3,5,7])
ARR[-1] = 1.534
print(ARR)
print(type(ARR))
2、数组的创建
代码如下(示例):
# 创建浮点数类型的值全为0的数组
print(np.zeros(5,dtype=float))
# array([ 0., 0., 0., 0., 0.])
# 创建整数类型的值全为0的数组
print(np.zeros(3,dtype=int))
# array([0, 0, 0])
# 创建值全为1的数组默认是dtype=float
print(np.ones(5,dtype=int))
# array([ 1., 1., 1., 1., 1.])
# 如果想要以任意值作为初始化的数组,那么可以创建一个空数组,然后使用fill方法将想要的值放入数组中
# 创建一个空数组,默认是dtype=float
a = np.empty(4)#????
print(a)
# 填充值为5
a.fill(5)
print(a)
# np.random模块包含可以创建随机数组的函数
# randn(5):生成一个服从正态分布(均值为0,方差为1)的5个随机样本数组
print(np.random.randn(5))
# array([-1.18036658, 1.14425616, -0.36694367, 0.38643801, 2.11955662])
三、多维数组
1、多维数组的高效性能
代码如下(示例):
# 使用列表来初始化一个二维数组
LIST2 = [[1, 2], [3, 4]]
ARR2 = np.array([[1, 2], [3, 4]])
print(LIST2)
print(ARR2)
# [[1, 2], [3, 4]]
# [[1 2]
# [3 4]]
# 返回第1行第2列的数值
print(LIST2[0][1])
print(ARR2[0, 1])
# 2
# 2
# 返回2行3列的array,且值全部为0
print(np.zeros((2, 3), dtype=int))
# [[0 0 0]
# [0 0 0]]
# 返回2行4列的array,且值为均值为10,标准差为3的正态分布的随机数
# 样本标准差=方差的算术平方根=s=sqrt(((x1-x)^2 +(x2-x)^2 +......(xn-x)^2)/(n-1))
print(np.random.normal(10, 3, (2, 4)))
# [[15.46854485 10.58685134 8.13906123 5.86643628]
# [ 7.77318703 9.22979291 13.24331325 13.74067878]]
# 只要元素总数不变,数组的形状就可以随时改变
arr1 = np.arange(8)
print(arr1)
arr2 = np.arange(8).reshape(2, 4)
print(arr2)
# [0 1 2 3 4 5 6 7]
# [[0 1 2 3]
# [4 5 6 7]]
# 好像就是跟着变换,arr1和arr2共享一个存储地址
arr1 = np.arange(8)
arr2 = arr1.reshape(2, 4)
arr1[0] = 1000
print(arr1)
print(arr2)
# [1000 1 2 3 4 5 6 7]
# [[1000 1 2 3]
# [ 4 5 6 7]]
# copy过来的值不发生变换,arr3分配了一个新的地址
arr3 = arr1.copy()
arr1[0] = 1
print(arr3)
print(arr1)
print(arr2)
# [1000 1 2 3 4 5 6 7]
# [1 1 2 3 4 5 6 7]
# [[1 1 2 3]
# [4 5 6 7]]
2、多维数组的索引与切片
代码如下(示例):
# 第2行,第3列的值
print(arr2[1, 2:3])#??
# [6]
# 第3列的所有值
print(arr2[:2,2])
# [2 6]
# 第2行,第3列的值,吓人,还以为出现了了不起的事呢!
print(arr2[1][2:3])
# arr2[1]=[4 5 6 7]
arr2[1][2:3]=[6]
# [6]
#都可以list和narray
LIST = [[1,2,3],[4,5,6]]
print([i[2] for i in arr2])
3、多维数组的属性
代码如下(示例):
arr = arr2
# 元素类型
print('Data type :',arr.dtype)
# 数组大小
print('Total number of elements:',arr.size)
# 数组的维度
print('Number of dimensions :',arr.ndim)
# 数组的行列大小
print('Shape(dimensionality) :',arr.shape)
# 数组元素所占的位数(二进制位)
print('Memory used (in bytes) :',arr.nbytes)
# Data type : int32
# Total number of elements: 8
# Number of dimensions : 2
# Shape(dimensionality) : (2, 4)
# Memory used (in bytes) : 32
# 最小值,最大值--厉害
print('Minimum and maximum :',arr.min(),arr.max())
# 求和
print('Sum and product of all elements:',arr.sum(),arr.prod())
# 均值,方差
print('Mean and staandard deviation :',arr.mean(),arr.std())
# Minimum and maximum : 1 7
# Sum and product of all elements: 29 5040
# Mean and staandard deviation : 3.625 2.117634293262177
# 多维数组,可以通过传递轴参数,使数组沿着一个维度进行计算
# 沿着行
print('The sum of element along the rows is :',arr.sum(axis = 1))
# 沿着列
print('The sum of element along the columns is :',arr.sum(axis = 0))
# The sum of element along the rows is : [ 7 22]
# The sum of element along the columns is : [ 5 6 8 10]
# .T实现数组的转置
print("Array: \n",arr)
print("Transpose:\n",arr.T)
# Array:
# [[1 1 2 3]
# [4 5 6 7]]
# Transpose:
# [[1 4]
# [1 5]
# [2 6]
# [3 7]]
四、数组的运算
代码如下(示例):
# 数组加法
arr1 = np.arange(4)
print(arr1)
arr2 = np.arange(10,14)
print(arr2)
print(arr1, '+', arr2, '=',arr1+arr2)
# [0 1 2 3]
# [10 11 12 13]
# [0 1 2 3] + [10 11 12 13] = [10 12 14 16]
# 数组乘法
print(arr1, '*', arr2, '=', arr1*arr2)
# [0 1 2 3] * [10 11 12 13] = [ 0 11 24 39]
print(1.5 * arr1)
# [0. 1.5 3. 4.5]
总结
算是了解一下Numpy库,不得不说,还是很强大的,我自己通过敲我们老师发的pdf文档和课本上的内容,今天是有收获的,哈哈!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)