例子:奇异值分解SVD
读取图片,选取前若干值进行展示。任何一个图片都可以看做一个矩阵
安装解释器、Python包、IDE
各种包地址
IDE:
- 下载anaconda,conda install python=3.7...
- Pycharm社区版
Numpy和matplotlib.pyplot的使用
- 矩阵基础
import numpy as np
import matplotlib.pyplot as plt
x = np.random.rand(10, 2) # 10*2行列
print('x:', x)
print('x[2]: ', x[2]) # 第三行
print('x[2, :]: ', x[2, :]) # 第三行
print('x[[3, 6, 1]]: ', x[[3, 6, 1]]) # 第四行
print('x[:, 0]: ', x[:, 0]) # 第1列
print('x[:, 1]: ', x[:, 1]) # 第2列
image.png
- matplotlib绘制随机点
import numpy as np
import matplotlib.pyplot as plt
data = np.random.rand(1000, 2) # 随机产生1000行1列的数组
print('data: ', data)
x = data[:, 0] # 第一列数据
y = data[:, 1] # 第二列数据
plt.plot(x, y, 'go', markersize = 1)
plt.show()
image.png
- 绘制红色圆形
import numpy as np
import matplotlib.pyplot as plt
data = 2 * np.random.rand(10000, 2) - 1
print('data: ', data)
x = data[:, 0] # 第一列数据
y = data[:, 1] # 第二列数据
# 绘制红色的点圆(由于做表面比例不同,故显示成椭圆)
idx = x ** 2 + y ** 2 < 1
plt.plot(x[idx], y[idx], 'ro', markersize = 1)
plt.show()
image.png
- 绘制蓝色空心圆
import numpy as np
import matplotlib.pyplot as plt
data = 2 * np.random.rand(10000, 2) - 1
print('data: ', data)
x = data[:, 0] # 第一列数据
y = data[:, 1] # 第二列数据
idx = x ** 2 + y ** 2 < 1
hole = x ** 2 + y ** 2 < 0.25
idx = np.logical_and(idx, ~hole) # 逻辑与,在大圆内不再小圆内
plt.plot(x[idx], y[idx], 'bo', markersize = 1)
plt.show()
image.png
网友评论