3 回答

TA贡献2016条经验 获得超9个赞
你可以考虑使用这种方法吗?
import numpy as np
# build the array
a = np.zeros( (6,6), dtype=int )
a[4][1] = 1
a[3][5] = 2
# extract required informations
i,j = np.where(a == 1)
h,k =np.where(a == 2)
print (i-h) => [1]
print (j-k) => [-4]

TA贡献1851条经验 获得超4个赞
我尝试另一种方式:
在长度的水平轴上,size
从a
到b
,让delta = ((b-a)%size*2-1)//size
。
如果
delta=-1
,a=b
:你不动。如果
delta=0
:你必须向右走。如果
delta=1
:你必须向左走。
所以这段代码似乎有效
size=10
vertical=['down','up',None]
horizontal=['right','left',None]
def side(a,b):
return ((b-a)%size*2-1)//size
def step(M1,M2):
x1,y1=M1
x2,y2=M2
return (vertical[side(x1,x2)],horizontal[side(y1,y2)])
例如 :
In [6]: step((2,1),(2,8))
Out[6]: (None, 'left')
添加回答
举报