n 维数组线性变换
看完之后,掌握以下知识:
- 理解 一维,二维,n维数组在numpy中的不同;
- 学会使用线性代数相关知识对n维数组操作而不是使用for-loops;
- 理解n维数组的轴和形状变换。
matrix decomposition(矩阵分解)
Singular Value Decomposition(单值分解): 产生一个压缩的图像近似值
from scipy import misc
img = misc.face() # 使用scipy.misc 中的 face image
img is a Numpy array,as we can see when using the type function
img 是一个numpy的数组,可以使用type这个函数查看
type(img)
# 输出 numpy.ndarray
我们可以使用matplotlib.pyplot.imshow函数和特殊的iPython命令–%matplotlib inline来显示内嵌式图画。
import matplotlib.pyplot as plt
%matplotlob inline
# or
plt.imshow(img)
plt.show()

形状、轴和数组属性
NOTE THAT!!! 在线性代数中,向量的维数是指数组中的条目数。在NumPy中,它反而定义了轴的数量。例如,一维数组是一个矢量,如[1, 2, 3],二维数组是一个矩阵,以此类推
- 首先,我们需要确定上面图像的shape。根据图像是个矩形我们可以猜测是二维的,或许可以用二维的array(矩阵)去表示这个图像,但是使用
shape这个属性,可以看到不一样的答案。
img.shape
# 输出 (768,1024,3)
这个输出是一个包含三个元素的元组,代表这是一个三维的array。从上图可知,这是一个有色彩的图像,可以使用imread函数去查看它,这个数据是由三个二维的矩阵组合起来的。三维代表的是颜色的通道(RGB-red,green,blue)
总之:三个矩阵,每个矩阵shape是768 * 1024
使用ndim属性可以查看维度
img.ndim
# 输出 3
NumPy将每个维度称为一个轴 由于imread的工作方式,第三轴的第一个索引是我们图像的红色像素数据。我们可以通过使用以下语法来访问它
img[:,:,0]
array([[121, 138, 153, ..., 119, 131, 139],
[ 89, 110, 130, ..., 118, 134, 146],
[ 73, 94, 115, ..
Numpy SVD在n维数组线性变换中的应用

本文介绍了如何使用Numpy库进行n维数组的线性变换,重点讨论了矩阵分解中的SVD(单值分解)方法。通过SVD,可以对图像进行压缩并创建近似值,同时保持关键特征。文章还涵盖了数组的形状、轴和属性,以及如何在轴上进行操作,包括将彩色图像转换为灰度图像。通过实例展示了如何在多维数组上应用SVD,并解释了如何选择合适的奇异值数量来获得合理近似。
最低0.47元/天 解锁文章
2999

被折叠的 条评论
为什么被折叠?



