私はpysalを把握しようとしています。次のように作成されたチェッカーボードがあるとします。
import numpy as np
import pysal
def build_checkerboard(w, h) :
re = np.r_[ w*[0,1] ] # even-numbered rows
ro = np.r_[ w*[1,0] ] # odd-numbered rows
return np.row_stack(h*(re, ro))
cb = build_checkerboard(5, 5)
ここで、最後の行と列を削除して、 の重み行列で使用可能な次元に一致させますpysal
。
cb = np.delete(cb, (9), axis=0)
cb = np.delete(cb, (9), axis=1)
In[1]: cb
Out[1]:
array
([[0, 1, 0, 1, 0, 1, 0, 1, 0],
[1, 0, 1, 0, 1, 0, 1, 0, 1],
[0, 1, 0, 1, 0, 1, 0, 1, 0],
[1, 0, 1, 0, 1, 0, 1, 0, 1],
[0, 1, 0, 1, 0, 1, 0, 1, 0],
[1, 0, 1, 0, 1, 0, 1, 0, 1],
[0, 1, 0, 1, 0, 1, 0, 1, 0],
[1, 0, 1, 0, 1, 0, 1, 0, 1],
[0, 1, 0, 1, 0, 1, 0, 1, 0]])
ここで、クイーン隣接ルール (ムーア近傍cb
とも呼ばれます) を使用して、結合数統計 ( my の値は または のいずれ0
か) を使用しましょう。1
w=pysal.lat2W(3,3, rook=False) #This yields a 9x9 matrix
jc=pysal.Join_Counts(cb,w) #The Join Counts
さて、結果:
In[2]: jc.bb #The 1-to-1 joins
Out[2]: array([ 4., 4., 4., 4., 4., 4., 4., 4., 4.])
In[3]: jc.bw #The 1-to-0 joins
Out[3]: array([ 12., 12., 12., 12., 12., 12., 12., 12., 12.])
In[4]: jc.ww #The 0-to-0 joins
Out[5]: array([ 4., 4., 4., 4., 4., 4., 4., 4., 4.])
In[5]: jc.J #The total number of joins
Out[5]: 20.0
私の質問:
- 異なる結合に対して単一の値ではなく、代わりに配列を取得するのはなぜですか? また、配列の各値は 1 つのマトリックス セルを参照しているように見えますが、合計は得られません。
20.0
結合の総数で言えば、です4+4+12
。マトリックスのサイズと構造を考えると、より多くの結合 (変更) が予想されます。取得した数値が予想とはかけ離れているのはなぜですか?