Python numpy+pillow

 

1.复习一下,列表和数组如何转换?

如何定义一个数组呢?

描述一下数组和矩阵的区别

import numpy as np

 

a=np.array([1,2,3])

print(a)   #定义一个数组,实际上是对列表[1,2,3]进行转换为数组

b=a.tolist()#数组.tulist()就是进行转为列表

 

2.如何定义为一个矩阵呢?

核心代码如下:a=np.array([[1,2,3],[2,4,5]])

注意!必须是大[]里面放上列表,每个列表表示矩阵的每行

如果是np.array([[1,2,3],[4,5]])程序会报错

 

3.如何建立一个数组\矩阵呢?

 

 有arange\zeros\ones\eye\randn\randint的方法

 

arange注意拼写,

例如np.arange(12) 构造出来的是数组是从0开始到11

np.arange(2,20,3) ,类似于range,从2开始到小于20介绍,步长为3

实际上输出是[2,5,8,11,14,17]

 

zeros是输出全0的数组\矩阵

ones是输出全为1的数组\矩阵

eye输出对角线为1的矩阵

randn是输出标准正态分布的随机矩阵

randint是输出随机整数矩阵(给定范围)

 

np.zeros([3,2],dtype=int)表示的是输出3行2列的0矩阵

后面int可以换为float

np.ones([3,2],dtype=int)则是换为输出全为1的矩阵

np.eye(3)则是生成一个对角线上为1的矩阵

[1 0 0

 0 1 0

 0 0 1]

使用randn和randint函数格式为:

np.random.randn(2,3)

np.random.randint(100,200,(2,3)

前面是生成一个2行3列的标准正态分布的矩阵

后面是生成一个数值区间为[100,200]的2行3列的矩阵

 

4.如何更改矩阵的行列呢?或是得知矩阵的行列呢?

 

数组.reshape(行数,列数)

 

   便可以转化对于 行数和列数的数组

 

数组.shape 

   

    便可以得知行数和列数

 

5. 如何进行查找数组中的元素的呢?

 

可以通过切片和索引的方式

 

具体的例子如下:

import numpy as np

a=np.arange(12)

b=slice(1,9,2)

print(a[b])

print(a[1:9:2])

 

输出的两个结果都为[1 3 5 7]

代码中slice(1,9,2)表示的开始从第1位开始,

在小于第9位截止,步长为2。

a[1:9:2]也是实现上面的查找功能。称上面的为切片,下面的为索引。

 

 

6.广播(broadcast)

广播是对形状不同的数组、矩阵进行的计算方式

注意这里的矩阵相乘不是数学上的矩阵相乘

如果矩阵a和矩阵b形状相同,那么a*b是对应位的相乘。

一定要注意!!!

 

a = np.array( [ [1, 2],

                [3,4]  ] )

b = np.array([1,2])

c = a * b

 

这个就触发了广播 最后输出c为

[[1 4]

 [3 8]]

 

一般来说对于矩阵a为m行n列,

那么矩阵b必须为1行n列

 

 

7.数组或矩阵的迭代

np.niditer(a)和a.flat

 

 

核心句式1:

for x in np.nditer(a):

    print (x, end=", " )

里面x为变量,a为数组\矩阵

 

 

核心句式2:

for element in a.flat:

    print (element)

里面element为变量,a为数组、矩阵

 

8. numpu里面的常用数学函数有哪些啊?

 

np.pi 是π的值,打印出是3.141592653589793

np.e  是e的值,打出来是2.718281828459045

 

np.sin()

np.cos()

np.tan()

括号里面是对应的三角函数弧度值

 

np.abs(a) 取a绝对值

np.power(a,b) 计算a的b次方

np.reciprocal(a) 计算a的倒数

np.log(a)计算ln(a)

np.exp(a)计算exp(a)

 

np.amin(a) 计算a的最小值

np.amax(a) 计算a的最大值

np.ptp(a)计算a的最大值和最小值的差值

np.median(a)计算a的中位数

np.mean(a)计算a的算术平均数

np.std(a)计算a的标准差

np.var(a)计算a的方差

 

注意axis=0表示按列 axis=1是按行

 

np.sort(a) 由小到大排序 默认为np.sort(a, axis =  0) 按行排序

np.sort(a, axis =  1) 按列

 

9. numpy里线性代数

 

矩阵转置:

比如 a=np.arange(12).reshape(3,4)

a.T表示的是转置

 

向量内积(对应点乘后相加)

np.inner(a,b)

 

矩阵乘积

np.matmul(a,b)

 

行列式计算

np.linalg.det(a)

 

逆矩阵

np.linalg.inv(a)

 

矩阵方程求解

numpy.linalg.solve(A, B)

用于求解AX=B形式的矩阵方程

 

10.绘图

from matplotlib import pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.rcParams['axes.unicode_minus'] = False

 

使用plt的初试化操作,后面两句是为了图的标题可以出现中文

 

对应例子如下:

x = np.arange(1,11)

y =  2  * x +  5

plt.title("Matplotlib demo") #标题

plt.xlabel("x axis caption") #坐标

plt.ylabel("y axis caption")

plt.plot(x,y) #绘制y(x)的图

plt.show() #图展示

 

 

对应例子如下:

plt.subplot(223)表示的图分为2行2列,结果图放在第3个

plt.imshow(a,'gray) 表示展示图a,颜色为灰色

 

11.利用pillow转换图

 

from PIL import Image

i=Image.open("brain.bmp")

l=i.convert("L")

打开brain.bmp图,然后对其转换为灰度图l

上一篇:golang中的字符串拼接


下一篇:pillow 读写保存图片