numpy 学习之:矩阵 array 和坐标矩阵 meshgrid 的区别

矩阵

  • 矩阵中的每一个位置(i,j)的 value 值,都代表了这个矩阵在这一点的值的大小,比如说我们可以用 A A A 来表示一个矩阵 arr,然后我们说 A i , j = 5 A_{i,j} = 5 Ai,j=5 我们想得到这个值的时候,我们需要用索引的方式得到这个值
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
arr
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
  • 我们可以通过 plt 来画出一个矩阵的图,他可以直接作为图片,上面的每一个点的值都可以作为一个 pixel 色度的值
plt.imshow(arr)

在这里插入图片描述

meshgrid

  • 坐标矩阵,顾名思义,他首先是个矩阵,但是这个矩阵中的每个位置的值都表示一个位置的 x x x 值或者 y y y
  • 坐标矩阵并不会用每个点的值来代表这个图上这个 pixel 的值的大小,所以坐标矩阵如果当 image 来进行 imshow 结果会很奇怪
grid_x = np.arange(3)
print(grid_x)
grid_x.shape
[0 1 2]





(3,)
grid_y = np.arange(3)
print(grid_y)
grid_y.shape
[0 1 2]





(3,)
[X,Y] = np.meshgrid(grid_x,grid_y)
print(X)

[[0 1 2]
 [0 1 2]
 [0 1 2]]
print(Y)

[[0 0 0]
 [1 1 1]
 [2 2 2]]
for i in range(len(X)):
    plt.scatter(X[i],Y[i])
plt.yticks(range(3))
plt.xticks(range(3))
plt.grid(True)
plt.show()

在这里插入图片描述

把 meshgrid 的图进行 imshow

  • 会很奇怪,因为总是沿着 x 方向不断增大,也总是沿着 y 方向不断增大
fig,(a1,a2) = plt.subplots(1,2,figsize=(8,4))
a1.imshow(X)
a2.imshow(Y)

在这里插入图片描述

坐标矩阵进行向量运算

  • 正是因为坐标矩阵 X 和 Y 可以联合起来代表整个图上所有点的坐标
  • 因此,可以通过坐标矩阵来进行向量的运算

回顾普通矩阵两个点相减的意义

  • 对于普通的矩阵 arr ,如果让 A i , j − A p , q = v , v ∈ R A_{i,j} - A_{p,q} = v, v \in R Ai,jAp,q=v,vR,两个矩阵中的点进行相减,只能得到一个具体的数值,没有蕴含任何的坐标信息

坐标矩阵两点相减

  • 我们都知道坐标之间的减法可以产生向量
i = 2
j = 2
p = 1.5
q = 1
point_ij = (i,j)
mode_ij = np.linalg.norm(point_ij)
mode_pq = np.linalg.norm(point_pq)

point_new = (i-p,j-q)
point_new
(0.5, 1)
  • 对于这里产生的 ( 2 , 1 ) (2,1) (2,1) 我们可以当做一个新的点,也可以当做是一个向量

可视化相减的向量

# 向量的模
mode = np.linalg.norm(point_new)
mode
1.118033988749895
plt.quiver(0,0,(i-p),(j-q),mode)
plt.colorbar()
'''
下图中的向量使用的是 单位向量 + 颜色深度来表示新的那个向量
'''

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖仔会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值