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

# 返回23列的array,且值全部为0
print(np.zeros((2, 3), dtype=int))
# [[0 0 0]
#  [0 0 0]]


# 返回24列的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文档和课本上的内容,今天是有收获的,哈哈!

posted @   cactus9  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示