数据分析与表示

Numpy库入门

Numpy库的数组对象:ndarray

  1. Numpy库的引用:

    1
    import numpy as np
  2. N维数组对象:ndarray

    ndarray是一个多维数组对象,由实际的数据、描述这些数据的元数据(数据维度、类型等)两部分构成。

    ndarray数组一般要求所有元素类型相同(同质),数组下标从零开始。

    用np.array()生成一个ndarray数组的例子:

    image-20230125154254290

np.array()输出成[]形式,元素由空格分隔。有两个重要概念:

  • 轴(axis):保存数据的维度
  • 秩(rank):轴的数量

五个基本属性如下:

image-20230125154524858

例子:

image-20230125154704491

ndarray元素类型

image-20230125154836622

image-20230125155015470

image-20230125155025380

当ndarray数组由非同质对象构成的时候,非同质ndarray元素为对象类型,无法有效发挥Numpy优势,尽量避免使用。

ndarray数组的创建和变换

ndarray数组的创建

从python中的列表、元组等类型创建ndarray数组
1
2
3
x = np.array(list)
x = np.array(tuple)
x = np.array(list, dtype=np.float32) #可以用dtype来指定数组类型,当不指定时候会根据数据情况关联一个dtype类型。
使用Numpy中函数创建ndarray数组

image-20230125155954519

image-20230125160418124

注意除了arange其余默认都是生成浮点数类型,除非加以dtype指定,如下:

image-20230125160229345

使用Numpy中其他函数创建ndarray数组

image-20230125160517411

例子:

image-20230125160629766

ndarray数组的变换

image-20230125161416827

image-20230125162118560

image-20230125162129442

ndarray数组的操作

索引和切片

和python很类似

image-20230125162411544

image-20230125162427848

image-20230125162449191

ndarray数组的运算

数组与标量的运算作用于数组的每一个元素。

image-20230125163206309

image-20230125163606482

image-20230125163657966

image-20230125163914539

image-20230125163950775

image-20230125164129052

Numpy数据存取与函数

数据的csv文件存取

csv文件(一二维数据的存取)

csv文件是一种常见的文件格式,用来存储批量数据。

np中存入csv文件的方法:

image-20230125165740157

image-20230125165912757

读入:

image-20230125170102689

csv缺点是只能存储一维和二维数组,np.savetxt()和np.loadtxt()只能有效存储一维和二维数组。

多维数据的存取

a.tofile()

image-20230125170714016

例子如下,注意不像csv会分开,而是会丢失维度信息。

image-20230125170812894

如果不指定sep的话会存储为二进制文件,无法直接读取,但是会占用更小的空间。

image-20230125170938550

np.fromfile() 读取文件,可以通过reshape恢复维度信息

image-20230125171015679

例子:

image-20230125171155764

np的便捷文件存取

image-20230125171504930

例子:

image-20230125171623117

Numpy的随机数函数

Numpy的random子库,用法:np.random.*

image-20230126143201899

image-20230126143604480

image-20230126144139776

Numpy的统计函数

np.*

image-20230126144408292

image-20230126144949698

示例

image-20230126144936800

Numpy的梯度函数

image-20230126145757450

例子

image-20230126150042485

image-20230126150204777

实例:图像的手绘效果

图像的数组表示

小护士

1
2
3
4
5
from PIL import Image
import numpy as np

im = np.array(Image.open("小护士.jpg"))
print(im.shape, im.dtype)

输出结果为:

1
(640, 639, 3) uint8

说明图像是一个三维数组,维度分别是高度、宽度、像素rgb值。