Numpy n维数组的线性变换(Linear algebra on n-dimensional arrays)SVD

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],二维数组是一个矩阵,以此类推

  1. 首先,我们需要确定上面图像的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, ...
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值