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')
添加回答
舉報