用python构建2D坐标矩阵

偶尔善良 提交于 2019-11-26 06:40:10

用python构建一个范围为[0,1]的2D坐标矩阵。

也适用于将图片转换成2D的网格型数据,进而转换成坐标矩阵。


如果是图片,要先将图片转换成网格型数据:

import numpy as np
col, row = np.meshgrid(np.arange(img_size),np.arange(img_size))

PS:如果不是图片类型的数据,直接将img_size替换成需要的坐标系的相关参数即可(前面是列后面是行)。

然后利用stack函数将生成的数据转换成坐标系:

coord = np.stack((col,row), axis=2).reshape(-1,2) / img_size

 

补充:

(为了方便解释,这里假设img_size=3)

1.np.meshgrid的解释

np.arange(3)   ->->->   [0,1,2]

np.meshgrid((0,1,2),(0,1,2))   ->->->   

[array([[0,1,2],

[0,1,2],

[0,1,2]], array([[0,0,0],

[1,1,1],

[2,2,2]])]

 

col = [[0,1,2], [0,1,2], [0,1,2]]

row = [[0,0,0], [1,1,1], [2,2,2]]

 

2.np.stack的解释

1) axis = 0

就是正常在col下面堆叠row。

[[[0,1,2],[0,1,2],[0,1,2]],

[[0,0,0],[1,1,1],[2,2,2]]]

 

2) axis = 1

相当于抽取每一个矩阵的第一行堆叠在一起,形成第一个矩阵。

[[[0,1,2],[0,0,0]],

[[0,1,2],[1,1,1]],

[[0,1,2],[2,2,2]]]

 

2) axis = 2

相当于抽取每一个矩阵的每一个数堆叠在一起,形成一个矩阵。

[[[0,0],[1,0],[2,0]],

[[0,1],[1,1],[2,1]],

[[0,2],[1,2],[2,2]]]

 

3.reshape(-1,2)表示列不变,行平铺。

reshape后输出为:

[[0,0],

[1,0],

[2,0],

[0,1],

[1,1],

[2,1],

[0,2],

[1,2],

[2,2]]

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!