numpy、scipy、pandas、matplotlib的读书报告

一、numpy

(一)书上学习笔记

1.概况

        Python 的标准库提供了一个array类型,用于保存数组类型数据,然而这个类型不支持多维数据,处理函数也不够丰富,不适合数值运算。因此引入了第三方库numpy

        numpy库处理的最基础数据类型是由同种元素组成的多维数组(ndarray),简称“数组”。数组中所有元素的类型必须相同,数组中元素可以用整数索引,序号从0开始。ndarray类型的维度(dimensions)叫做轴(axes),轴的个数叫做秩(rank)。一维数组的秩为1,二维数组的秩为2,二维数组相当于由两个一维数组构成。

array类型和ndarray类型的区别如下

由于numpy库中函数较多切命名容易与常用命名混淆,建议采用如下方式引用numpy库:

import numpy as np    #给numpy库起别名为np

2.库解析

①numpy库常用的数组创建函数(七个)

np.array([x,y,z],dtype = int)      #从Python列表和元组创造数组

import numpy as np
lst = [1,2,3,4]
yu = (1,2,3)
a = np.array(lst,float)
b = np.array(yu,int)
print(a)
print(b)
print(type(a))
print(type(b))
print(np.array(("a","b","c"),str))

#输出结果为:
[1. 2. 3. 4.]
[1 2 3]
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
['a' 'b' 'c']

np.arange(x,y,i)    #创建一个由x到y,以i为步长的数组【前闭后开】

print(np.arange(1,6,1))

#运行结果为:
[1 2 3 4 5] #注意到x和y的取值为前闭后开的特点

np.linspace(x,y,n)  #创建一个由x到y,等分成n个元素的数组【与Matlab中的用法相同】

np.indices((m,n))    #创建一个m行n列的矩阵

np.random.rand(m,n)  #创建一个m行n列的随机数组

print(np.random.rand(3,4))

#运行结果为:
[[0.96776646 0.06157409 0.71336763 0.46663309]
 [0.68123245 0.99764803 0.73261745 0.17772861]
 [0.82573963 0.65535179 0.62535591 0.5605896 ]]

np.ones((m,n),dtype)  #创建一个m行n列全1的数组,dtype是数据类型

np.empty((m,n),dtype)  #创建一个m行n列全0的数组,dtype是数据类型

②ndarray类的常用属性(七个)

数组在numpy中被当做对象,可以采用<a>.<b>()方式调用一些方法。

ndarray.ndim:数组轴的个数,也被称作秩

ndarray.shape:数组在每个维度上大小的整数元组

ndarray.size :数组元素的总个数

ndarray.dtype:数组元素的数据类型,dtype类型可以用与创建数组

ndarray.itemsize:数组中每个元素的字节大小

ndarray.data:包含实际数组元素的缓冲区地址

ndarray.flat:数组元素的迭代器

a = np.random.rand(3,4) #生成ndarray类型的东西赋值给a
print(a)
print(a.ndim)
print(a.shape)
print(type(a.shape))
print(a.size)
print(a.dtype)
print(a.itemsize)
print(a.data)
print(a.flat)

#运行结果:
[[0.49107822 0.65403825 0.01807861 0.97796751]
 [0.4674807  0.62945716 0.50264589 0.33967044]
 [0.37201271 0.24275369 0.71666452 0.83857991]]
2
(3, 4)
<class 'tuple'>
12   # 3*4=12
float64
8
<memory at 0x00000266ABCD65A0>
<numpy.flatiter object at 0x00000266A97D7E00>
③ndarray类的形态操作方法(5个)

ndarray.reshape(n,m):不改变数组ndarray,返回一个维度为(n,m)的数组

ndarray.resize(new_shape):与reshape()作用相同,直接修改数组ndarray

辨析reshape和resize

one.  reshape返回一个新的数组,而resize会直接修改原数

a = np.ones((3,4),int) #生成ndarray类型的东西赋值给a
print(a)
print(a.reshape(2,6))
print(a)
print(a.resize(2,6))
print(type(a.resize((2,6))))
print(a)

#运行结果为:
[[1 1 1 1]
 [1 1 1 1]       #原来a的模样
 [1 1 1 1]]

[[1 1 1 1 1 1]
 [1 1 1 1 1 1]]   #在reshape作用下产生的新数组的模样

[[1 1 1 1]
 [1 1 1 1]     #数组a不发生改变,还是原来的3*4的模样
 [1 1 1 1]]
None           #resize作用下不返回任何类型,只修改原来的数组a
<class 'NoneType'>
[[1 1 1 1 1 1]
 [1 1 1 1 1 1]]  #原来的数组a发生了结构上的改变

two.  reshape可以通过参数指定新数组的形状,而resize可以通过参数指定新数组的形状或者直接指定要改变的维度大小。 

three. reshape不改变原数组的大小,而resize会在必要时添加或删除元素以满足新形状的要求。

a = np.ones((3,4),int) #生成ndarray类型的东西赋值给a
print(a.reshape(2,3))

#运行结果为:
ValueError: cannot reshape array of size 12 into shape (2,3)
【出错】:a的size为3*4=12,而reshape不可改变size,即a.reshape(m,n)中,m*n = 3*4=12

a = np.array(((1,2,3,4),(4,5,6,7),(8,9,0,1),(2,3,4,5)),int) #生成ndarray类型的东西赋值给a
print(a)
a.resize(2,3)
print(a)

#运行结果为:
[[1 2 3 4]
 [4 5 6 7]
 [8 9 0 1]
 [2 3 4 5]]
[[1 2 3]
 [4 4 5]]

ndarray.swapaxes(ax1,ax2):将数组n个维度中任意两个维度进行调换

ndarray.flatten():对数组进行降维,返回一个折叠后的一维数组。相当于平铺数组中的数据,该功能在矩阵运算及图像处理中用处很大。

ndarray.ravel():作用同np.flatten(),但是返回数组的一个视图

Q:展平函数ravel和flatten及两者的区别?

ravel()flatten()是将多维数据展平为一维数据,功能相同,区别在于一个是引用操作,一个是复制操作。ravel()展平数据后,修改后面的数据会影响前面的数据,而flatten()展平数据后,不会影响前面的数据。

参考链接:python学习笔记之-展平函数ravel和flatten及两者的区别_ravel()跟flatten()的区别-CSDN博客文章浏览阅读4.3k次,点赞14次,收藏23次。ravel()和flatten()是将多维数据展平为一维数据,功能相同,区别在于一个是复制操作,一个是引用操作。ravel()展平数据后,修改后面的数据会影响前面的数据,而flatten()展平数据后,不会影响前面的数据。代码如下:import numpy as npa = np.arange(15).reshape(3,5)a>>> array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10,_ravel()跟flatten()的区别https://blog.csdn.net/u014543416/article/details/120994088

④ndarray类的索引和切片方法(5个)


⑤numpy库的算数运算函数(8个)


⑥numpy库的比较运算函数——【返回数据类型为bool的数组】

np.equal(x1,x2[,y]) : y = x1 == x2

np.not_equal(x1,x2[,y]) : y = x1 != x2

np.less(x1,x2[,y]) : y = x1 < x2

np.less_equal(x1,x2[,y]) : y = x1 <= x2

np.greater(x1,x2[,y]) : y = x1 > x2

np.greater(x1,x3[,y]) : y = x1 >= x2

np.where(condition[x,y]) : 根据给出的条件判断输出x还是y【是三元表达式x if condition else y 的矢量版本】

⑦numpy库的其他运算函数(9个)【参数x的数据类型为ndarray】

np.abs(x)  #计算基于元素的整型、浮点或复数的绝对值

np.sqrt(x)  #计算每个元素的平方根

np.squre(x)  #计算每个元素的平方

np.sign(x)  #计算每个元素的符号: 1(+)、0、-1(-)

np.ceil(x)  #计算大于或等于每个元素的最小值

np.floor(x)  #计算小于或等于每个元素的最大值

np.rint (x[, out])  #圆整,取每个元素为最近的整数,保留数据类型

Q:参数out是什么?

out : ndarrayNonendarrayNone的元组

可选 存储结果的位置。如果提供,它必须具有传入的形状。如果未提供或None,则返回新分配的数组。 元组(仅可作为关键字参数)的长度必须等于输出的数量。

参考链接

Python numpy.rint 函数方法的使用-CJavaPyNumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。本文主要介绍一下numpy中rint方法的使用。icon-default.png?t=N7T8https://www.cjavapy.com/article/216/

np.exp(x[, out])  #计算每个元素的指数值 

np.log(x), np.log10(x), np.log2(x)  #计算自然对数(e),基于10、2的对数,log(1+x)

(二)其他丰富的功能

包括:三角运算函数、傅里叶变换、随机和概率分布、基本数值统计、位运算、矩阵运算等。

numpy数学函数参考链接:

https://zhuanlan.zhihu.com/p/511299164icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/511299164numpy学习 其他教程参考链接【够全面】

NumPy 教程 | 菜鸟教程NumPy 教程 NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。 NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPy。N..icon-default.png?t=N7T8https://www.runoob.com/numpy/numpy-tutorial.html

二、scipy

1.简单介绍

SciPy 是一个开源的 Python 算法库和数学工具包。

Scipy 是基于 Numpy 的科学计算库,用于数学、科学、工程学等领域,很多有一些高阶抽象和物理模型需要使用 Scipy。

SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。

应用:

scipy 是一个用于数学、科学、工程领域的常用软件包,可以处理最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理、图像处理、常微分方程求解器等。 。

SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。

NumPy 和 SciPy 的协同工作可以高效解决很多问题,在天文学、生物学、气象学和气候科学,以及材料科学等多个学科得到了广泛应用。

2.学习教程链接索引

SciPy 教程 | 菜鸟教程SciPy 教程 SciPy 是一个开源的 Python 算法库和数学工具包。 Scipy 是基于 Numpy 的科学计算库,用于数学、科学、工程学等领域,很多有一些高阶抽象和物理模型需要使用 Scipy。 SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。 学习本教程前你需要了解 在开学习 SciPy 教程之前,我们需要具备基本的 ..icon-default.png?t=N7T8https://www.runoob.com/scipy/scipy-tutorial.html

三、pandas

1.简单介绍

Pandas 是 Python 语言的一个扩展程序库,用于数据分析。

Pandas 名字衍生自术语 "panel data"(面板数据)和 "Python data analysis"(Python 数据分析)。

Pandas 是一个开放源码、BSD 许可的库,提供高性能、易于使用的数据结构和数据分析工具。

Pandas 一个强大的分析结构化数据的工具集,基础是 Numpy(提供高性能的矩阵运算)。

2.学习教程链接索引

Pandas 教程 | 菜鸟教程Pandas 教程 Pandas 是 Python 语言的一个扩展程序库,用于数据分析。 Pandas 名字衍生自术语 “panel data”(面板数据)和 “Python data analysis”(Python 数据分析)。 Pandas 是一个开放源码、BSD 许可的库,提供高性能、易于使用的数据结构和数据分析工具。 Pandas 一个强大的分析结构化数据的工具集,基础是 Numpy(提供高性能的矩阵运算)。 ..icon-default.png?t=N7T8https://www.runoob.com/pandas/pandas-tutorial.html

四、matplotlib

(一)书上学习笔记

要点:matplotlib是提供数据绘图功能的第三方库,其pyplot字库主要用于实现各种数据展示图形的绘制。

1.概述

引用字库:

import matplotlib.pyplot as plt

 为了正确显示中文字体,用以下代码更改默认设置,其中‘SimHei’表示黑体字。

字体名称字体英文表示
宋体SimSun
黑体SimHei
楷体KaiTi
微软雅黑Microsoft YaHei
隶书LiSu
仿宋FangSong
幼圆YouYuan
华文宋体STSong
华文黑体STHeiti
苹果丽中黑Apple LiGothic Medium

matplotlib库由一系列有组织有隶属关系的对象构成,这对于基础绘图操作来说显得过于复杂。因此,matplotlib提供了一套快捷命令式的绘图接口函数,即pyplot子模块。pyplot将绘图所需的对象构建过程封装在函数中,对用户提供了更加友好的接口。pyplot模块提供了一批预定义的绘图函数,大多数函数可以从函数名辨别它们的功能。

2.matplotlib.pyplot库解析

子库matplotlib.pyplot库提供了操作和绘图函数。

①plt库绘图区域函数

plt.figure(figsize=None, facecolor=None) : 创建一个全局绘图区域,并且使它成为当前的绘图对象,figsize参数可以指定绘图区域的宽度和高度,单位为英尺。鉴于figure()函数参数比较多,这里采用指定参数名称的方式输入参数。

plt.figure(figsize = (8,4))

绘制图像之前也可以不调用figure()函数创建全局绘图区域,此时,plt子库会自动创建一个默认的绘图区域。可用以下代码显示绘图区域:

plt.show()

plt.axes(rect, axisbg-'w'): 创建一个坐标系风格的子绘图区域

        axes()默认创建一个subplot(111)坐标系,参数rect = [ left,bottom,width,height]中4个变量的范围都为[0,1],表示坐标系与全局绘图区域的关系; axisbg指背景色,默认为write

plt.subplot(nrows, ncols, plot_number) : 在全局绘图区域中创建一个子绘图区域

        subplot()用于在全局绘图区域内创建子绘图区域,其参数表示将全局绘图区域分成nrows行和ncols列,并根据先行后列的计数方式在plot_number位置生成一个坐标系。

plt.subplot(324) 
#全局绘图区域被分割成3×2的网格,其中,在第四个位置绘制一个坐标系
plt.show()

plt.subplots_adjust() : 调整子绘图区域的布局

②plt库的读取和显示函数(6个)

plt.legend() :在绘图区域中放置绘图标签(也称图注)

plt.show() :显示创建的绘图对象

plt.matshow() :在窗口显示数组矩阵

plt.imshow():在axes上显示图像

plt.imsave():保存数组为图像文件

plt.imread():从图像文件中读取数组

③plt库的基础图表函数

plt.plot(x,y,label,color,width):根据x,y数组绘制直、曲线

plt.boxplot(data,notch,position):绘制一个箱型图(Box-plot)

plt.bar(left,height,width,bottom):绘制一个条形图

plt.barh(bottom,width,height,left):绘制一个横向条形图

plt.polar(theta,r):绘制极坐标图

plt.pie(data,explode):绘制饼图

plt.psd(x,NFFT = 256,pad_to,Fs):绘制功率谱密度图

plt.specgram(x,NFFT = 256,pad_to,F):绘制谱图

plt.cohere(x,y,NFFT = 256,Fs):绘制X-Y的相关性函数

plt.scatter():绘制散点图(x、y是长度相同的序列)

plt.step(x,y,where):绘制步阶图

plt.hist(x,bins,normed):绘制直方图

plt.contour(X,Y,Z,N):绘制等值线

plt.vlines():绘制垂线图

plt.stem(x,y,linefmt,markerfmt,basefmt):绘制曲线每个点到水平轴线的垂线

plt.plot_date():绘制数据日期

plt.plotfile():绘制数据后写入文件

Tips: plot()函数是用于绘制直线的最基础的函数,调用方式很灵活,x和y可以使numpy计算出的数组,并用关键字参数指定各种属性。其中label表示设置标签在图例(legend)中显示,color表示曲线的颜色,linewidth表示曲线的宽度。在字符串前后添加“$”符号,matplotlib会使用期内置的latex引擎绘制数学公式。

④plt库的标签设置函数(13个)

plt.figlegend(handles,label,loc):为全局绘图区域放置图注

plt.legend():为当前坐标图放置图注

plt.xlabel(s):设置当前x轴的标签

plt.ylabel(s):设置当前y轴的标签

plt.xticks(array,'a','b','c'):设置当前x轴刻度位置的标签和值

plt.yticks(array,'a','b','c'):设置当前y轴刻度位置的标签和值

plt.clabel(cs,v):为等值线图设置标签

plt.get_figlabels():返回当前绘图区域的标签列表

plt.figtext(x,y,s,fontdic):为全局绘图区域添加文字

plt.title():设置标题

plt.suptilte():为当前绘图区域添加文字

plt.text(x,y,s,fontdic,withdash):为坐标图轴添加注释

plt.annotate(note,xy,xytext,xycoords,textcoords,arrowprops):用箭头在指定数据点创建一个注释或一段文本

⑤plt库的区域填充函数(3个)

fill(x,y,c,color):填充多边形

fill_between(x,y1,y2,where,color):填充两条曲线围成的多边形

fill_betweenx(y,x1,x2,where,hold):填充两条水平线之间的区域

(二)其他学习资料

Matplotlib 教程 | 菜鸟教程Matplotlib 教程 Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。 Matplotlib 可以用来绘制各种静态,动态,交互式的图表。 Matplotlib 是一个非常强大的 Python 画图工具,我们可以使用该工具将很多数据通过图表的形式更直观的呈现出来。 Matplotlib 可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。..icon-default.png?t=N7T8https://www.runoob.com/matplotlib/matplotlib-tutorial.html

总结

初次面对如此多函数的库,还是会引起学习拖延。对于库的学习也许不在于完全记住而在于了解,了解有什么功能,了解如何使用,当需要用到的时候能够反应的过来。总的来说,还是得多实践,光是记估计是记不得什么的…

代码纯手敲也许有错乱…

  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值