例子:奇異值分解SVD
讀取圖片,選取前若干值進(jìn)行展示栗弟。任何一個(gè)圖片都可以看做一個(gè)矩陣
安裝解釋器污筷、Python包、IDE
各種包地址
IDE:
- 下載anaconda乍赫,conda install python=3.7...
- Pycharm社區(qū)版
Numpy和matplotlib.pyplot的使用
- 矩陣基礎(chǔ)
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繪制隨機(jī)點(diǎn)
import numpy as np
import matplotlib.pyplot as plt
data = np.random.rand(1000, 2) # 隨機(jī)產(chǎn)生1000行1列的數(shù)組
print('data: ', data)
x = data[:, 0] # 第一列數(shù)據(jù)
y = data[:, 1] # 第二列數(shù)據(jù)
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] # 第一列數(shù)據(jù)
y = data[:, 1] # 第二列數(shù)據(jù)
# 繪制紅色的點(diǎn)圓(由于做表面比例不同,故顯示成橢圓)
idx = x ** 2 + y ** 2 < 1
plt.plot(x[idx], y[idx], 'ro', markersize = 1)
plt.show()
image.png
- 繪制藍(lán)色空心圓
import numpy as np
import matplotlib.pyplot as plt
data = 2 * np.random.rand(10000, 2) - 1
print('data: ', data)
x = data[:, 0] # 第一列數(shù)據(jù)
y = data[:, 1] # 第二列數(shù)據(jù)
idx = x ** 2 + y ** 2 < 1
hole = x ** 2 + y ** 2 < 0.25
idx = np.logical_and(idx, ~hole) # 邏輯與陆蟆,在大圓內(nèi)不再小圓內(nèi)
plt.plot(x[idx], y[idx], 'bo', markersize = 1)
plt.show()
image.png