Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 给定一个向量场(dx,dy),将位置(行,列)处的矩阵值移动到新位置(行+;dx,列+;dy)_Python_Pandas_Numpy_Image Processing - Fatal编程技术网

Python 给定一个向量场(dx,dy),将位置(行,列)处的矩阵值移动到新位置(行+;dx,列+;dy)

Python 给定一个向量场(dx,dy),将位置(行,列)处的矩阵值移动到新位置(行+;dx,列+;dy),python,pandas,numpy,image-processing,Python,Pandas,Numpy,Image Processing,给定一个矩阵 [ a b - ] [ - e f ] [ g h - ] 其中,为了演示,-表示零条目 我们也使用向量场 [ (0,1) (0,1) (0,0) ] [ (0,0) (0,-1) (0,-1) ] [ (0,1) (0,1) (0,0) ] 其中,每个元组指定要在矩阵中移动相应元素的数量(行、列)。通过相应的向量移动每个元素以实现以下目标的Pythonic/effective方法是什么: [

给定一个矩阵

[   a   b   -  ]
[   -   e   f  ]
[   g   h   -  ]
其中,为了演示,-表示零条目

我们也使用向量场

[   (0,1)   (0,1)   (0,0)  ]
[   (0,0)  (0,-1)  (0,-1)  ]
[   (0,1)   (0,1)   (0,0)  ]
其中,每个元组指定要在矩阵中移动相应元素的数量(行、列)。通过相应的向量移动每个元素以实现以下目标的Pythonic/effective方法是什么:

[   -   a   b  ]
[   e   f   -  ]
[   -   g   h  ]

这是受一个共同注册问题的启发,但除了在元素方面循环之外,我还没有找到一个解决这个问题的好办法。我不熟悉图像处理,也不熟悉Python编程-做这件事的有效/公认方法是什么?

可以使用
np.add.at

A = np.array([["a","b",""],["","c","d"],["e","f",""]])
l,n,r = [[0,-1],[0,0],[0,1]]
B = np.array([[r,r,n],[n,l,l],[r,r,n]])

out = np.zeros_like(A)
i,j = np.ogrid[:3,:3]
np.add.at(out.view('u4'),(i+B[...,0],j+B[...,1]),A.view('u4'))

out
# array([['', 'a', 'b'],
#        ['c', 'd', ''],
#        ['', 'e', 'f']], dtype='<U1')
A=np.array([[“A”、“b”、“c”、“d”、“e”、“f”和“]))
l、 n,r=[[0,-1],[0,0],[0,1]]
B=np.数组([[r,r,n],[n,l,l],[r,r,n]]
out=np.zero_类似(A)
i、 j=np.ogrid[:3,:3]
np.add.at(out.view('u4'),(i+B[…,0],j+B[…,1]),A.view('u4'))
出来
#数组(['',a',b'],
#[c]、[d]、[d]、[d],

#['''e','f']],dtype='你能进一步解释一下使用这些元组将
abc
转换为
cab
的逻辑吗?@AndyL。当然。更明确地说,我使用的向量场是一个变形图。一个玩具示例是一张脸不微笑的图像,和一张脸微笑的图像。从各方面考虑,嘴唇的像素会移动most.给定一个变形图,如何使用变形图从非笑脸近似出笑脸?它是数据帧还是numpy矩阵?向量场的一行中的值是否可以不同?例如:[(0,1)(1,1)(0,1)]?在
第0行
,您能否解释
a
如何移动到位置(0,1)和
c
移动到位置(0,0)?我明白了。为什么构建一个包含不同数据类型(out.view('u4'))的矩阵视图很重要?@batlike,因为numpy不喜欢添加字符串。我假设在实际问题中,您将有一个数字类型,所以您不需要(实际上,不应该)视图转换。。