Scipy 笔记
Table of Contents
1 SciPy
1.1 Image Operations
1.1.1 Image resize and recolor
import numpy as np from scipy.misc import imread, imsave, imresize img = imread('data/chenhongqi3.jpg') print(img.dtype, img.shape) img_recolor = img * [1, 0.95, 0.9] imsave('data/chenRecolor.jpg', img_recolor) img_resize = imresize(img_recolor, (300,300)) imsave('data/chenRecolResize.jpg', img_resize)
uint8 (1920, 1280, 3)
| resize | imresize |
| recolor | img = imread |
| img * row/column |
1.1.2 Distance between Points
1.1.3 pdist
scipy.spatial.distance.pdist input a matrix, return Euclidean dist of all rows
import numpy as np from scipy.spatial.distance import pdist, squareform x= np.array([[0, 1], [1, 0], [2, 0]]) print(x) # Euclidean distance between allrows of x print(pdist(x, 'euclidean')) d= squareform(pdist(x, 'euclidean')) print (d)
[[0 1] [1 0] [2 0]] [1.41421356 2.23606798 1. ] [[0. 1.41421356 2.23606798] [1.41421356 0. 1. ] [2.23606798 1. 0. ]]
how is the result computed
row 0 dist row 0 ===> result[0,0] row 0 dist row 1 ===> result[0,1] row 0 dist row 2 ===> result[0,2] row 1 dist row 0 ===> result[1,0] row 1 dist row 1 ===> result[1,1] row 1 dist row 2 ===> result[1,2] row 2 dist row 0 ===> result[2,0] row 2 dist row 1 ===> result[2,1] row 2 dist row 2 ===> result[2,2] --------------------------------------------- d[i,j] = x[i,:] dist x[j,:], for x,y = 0 to 3
1.1.4 cdist
scipy.spatial.distance.cdist
input 2 collections of points, compute every point from 1st collection to all points of 2nd collection
Note that, you can not apply squareform on the result of cdist, it's not an
symmetric matrix
from scipy.spatial.distance import cdist, squareform y1=np.array([[0, 1], [1, 0], [2, 0]]) y2=np.array([[3, 4], [4, 2], [2, 0]]) c = cdist(y1, y2, 'euclidean') print (c)
[[4.24264069 4.12310563 2.23606798] [4.47213595 3.60555128 1. ] [4.12310563 2.82842712 0. ]]
. [0,1] [1,0] [2,0] . | . | . +---------+--------+ . | | | . v v v . [3,4] [4,2] [2,0] . .result index (0,0) (0,1) (0,2)