美文网首页
python的学习笔记11

python的学习笔记11

作者: 三块给你买麻糬_31c3 | 来源:发表于2022-09-12 20:19 被阅读0次

    16、副本与视图

    16.1简单赋值

    它不会创建数组对象的副本,同时可以通过id()函数去访问,将一个数组的变化都反应在另一个数组上。如:

    16.2视图或浅拷贝

    ndarray.view() 方会创建一个新的数组对象,该方法创建的新数组的维数变化不会改变原始数据的维数。

    但是使用切片创建视图,在对视图进行修改时会影响到原始数组

    此时变量a、b都是arr的一部分视图,对视图的修改会直接反映到原数据中。但a,b 的id,是不同的,以此视图虽然指向原数据,但和赋值引用还是有区别的。

    16.3副本或深拷贝

    ndarray.copy() 函数创建一个副本。 对副本数据进行修改,不会影响到原始数据,它们物理内存不在同一位置。

    16.4小结

    对于赋值来说,它实际上是对象的引用,在进行赋值时,并没有拷贝这个对象,只是拷贝这个对象的引用,所以赋值的对象进行修改之后,原始数组也会改变。

    视图是数据的一个别称或引用,通过该别称或引用亦便可访问、操作原有数据,但原有数据不会产生拷贝。如果我们对视图进行修改,它会影响到原始数据,物理内存在同一位置。

    副本是一个数据的完整的拷贝,如果我们对副本进行修改,它不会影响到原始数据,物理内存不在同一位置。副本一般发生在:Python 序列的切片操作,调用deepCopy()函数。调用 ndarray 的 copy() 函数产生一个副本。

    17、numpy IO

    17.1小简介

    NumPy IO 操作是以文件的形式从磁盘中加载 ndarray 对象。在这个过程中,NumPy 可以两种文件类型处理 ndarray 对象,一类是二进制文件(以.npy结尾),另一类是普通文本文件。

    上述两种文件格式,分别对应着不同的 IO 方法,如下所示:

    文件类型 处理方法

    二进制文件 load() 和 save()

    普通文本文件 loadtxt() 和 savetxt()

    NumPy 给 ndarray 对象引入了一种.npy文件格式,通过它来件实现对 ndarray 对象的保存。npy 文件用于存储重建 ndarray 所需的数据、图形、dtype 和其他信息

    17.2 numpy.save()

    numpy.save(file, arr, allow_pickle=True, fix_imports=True)

    参数 说明

    file 要保存的文件,扩展名为 .npy,如果文件路径末尾没有扩展名 .npy,该扩展名会被自动加上。

    arr 要保存的数组

    allow_pickle 可选,布尔值,允许使用 Python pickles 保存对象数组,Python 中的 pickle 用于在保存到磁盘文件或从磁盘文件读取之前,对对象进行序列化和反序列化。

    fix_imports 可选,为了方便 Pyhton2 中读取 Python3 保存的数据。

    输出结果为[1,2,3,4,5]

    17.3 ny.savez()

    numpy.savez() 函数将多个数组保存到以 npz 为扩展名的文件中。函数为:numpy.savez(file, *args, **kwds)

    参数 说明

    file 要保存的文件扩展名为.npz,如果文件路径末尾没有扩展名.npz该扩展名会被自动加上。

    args 要保存的数组,可以使用关键字参数为数组起一个名字,非关键字参数传递的数组会自动起名为 arr_0, arr_1,

    kwds 要保存的数组使用关键字名称。

    输出结果:

    17.4 savetxt()

    savetxt() 函数是以简单的文本文件格式存储数据,对应的使用 loadtxt() 函数来获取数据。

    np.loadtxt(FILENAME, dtype=int, delimiter=' ')

    np.savetxt(FILENAME, a, fmt="%d", delimiter=",")

    参数 delimiter 可以指定各种分隔符、针对特定列的转换器函数、需要跳过的行数等。

    18、numpy Matplotlib

    18.1简介

    Matplotlib 是 Python 的绘图库。它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。它也可以和图形工具包一起使用,如 PyQt 和 wxPython。

    plt.plot()函数用于绘图,plt.plot(x, y, format_string, **kwargs)

    参数 说明

    x X轴数据,列表或数组,可选

    y Y轴数据,列表或数组

    format_string 控制曲线的格式字符串,可选

    **kwargs 第二组或更多(x,y,format_string),可画多条曲线

    format_string 由颜色字符、风格字符、标记字符组成,相应的字符都能搜到,这里就不记了

    此外还有:

    color : 控制颜色, 如color=‘green’;linestyle : 线条风格, 如linestyle=‘dashed’

    marker : 标记风格, 如marker=‘o’(实心圈标记);markersize: 标记尺寸, 如markersize=20

    markerfacecolor: 标记颜色, 如markerfacecolor=‘blue’;

    18.2绘制简单图像

    18.2.1绘制线性函数图像

    将x,y的数据传给plt.plot,然后绘制图形,最后通过plt.show()显示图像。

    如果想要以圆点的样式,来代替图 1 中的线条样式,那么可以使用“ ob”作为 plot() 的格式化字符

    18.2.2绘制正余弦图像

    18.2.3将两个图像绘制在一个表中

    此外还可以直接在一个plt.plot()中把两个图像都写进去

    18.3 绘制图表

    18.3.1绘制柱状图

    bar():pyplot 子模块中提供了 bar() 函数来生成柱状图

    18.3.2直方图

    Matplotlib 可以将直方图的数字表示转换为图形。 pyplot 子模块的 plt() 函数将包含数据和 bin 数组的数组作为参数,并转换为直方图。

    18.3.3散点图

    plt.scatter()函数,用于生成一个散点图,函数的语句中包含以下参数,其中x,y是必须的,其他是可选的

    18.3.4饼图

    (1)

    (2)给饼图加标签

    labels=languages为每个扇形打上标签;

    autopct='%1.1f%%'为每个扇形标上占比;

    通过设置参数counterclock为 False,使得方向改为顺时针方向;

    通过设置参数startangle为 90,将最大扇形放在 12 点钟方向;

    这里有个问题就是饼图的标题出现乱码,一个解决方法就是增加语句plt.rcParams['font.sans-serif']=['Simhei']

    18.4图例

    plt.legend()函数

    图例函数,包含以下的一些参数:

    (1)设置图例的位置:plt.legend(loc=' ');

    (2)设置图例字体大小fontsize : int or float or {‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’;

    (3)设置图例的边框及背景:

    plt.legend(loc='best',frameon=False) #去掉图例边框

    plt.legend(loc='best',edgecolor='blue') #设置图例边框颜色

    plt.legend(loc='best',facecolor='blue') #设置图例背景颜色,若无边框,参数无效

    (4)设置图例的标题

    legend = plt.legend(["BJ", "SH"], title='Beijing VS Shanghai')  #中括号里的是各个图像的名称

    plt.plot(["BJ", "SH"],loc='upper left',title='Beijing VS Shanghai')

    运行结果为:

    18.5 subplot()函数

    在图一个图中绘制不同的图线

    相关文章

      网友评论

          本文标题:python的学习笔记11

          本文链接:https://www.haomeiwen.com/subject/vkaqortx.html