numpy.histogram2d
2つの配列でデータをクロス集計するかどうかを確認しようとしています。以前にこの機能を使用したことがなく、修正方法がわからないエラーが発生しました。
import numpy as np
import random
zones = np.zeros((20,30), int)
values = np.zeros((20,30), int)
for i in range(20):
for j in range(30):
values[i,j] = random.randint(0,10)
zones[:8,:15] = 100
zones[8:,:15] = 101
zones[:8,15:] = 102
zones[8:,15:] = 103
np.histogram2d(zones,values)
このコードにより、次のエラーが発生します。
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-18-53447df32000> in <module>()
----> 1 np.histogram2d(zones,values)
C:\Python27\ArcGISx6410.2\lib\site-packages\numpy\lib\twodim_base.pyc in histogram2d(x, y, bins, range, normed, weights)
613 xedges = yedges = asarray(bins, float)
614 bins = [xedges, yedges]
--> 615 hist, edges = histogramdd([x,y], bins, range, normed, weights)
616 return hist, edges[0], edges[1]
617
C:\Python27\ArcGISx6410.2\lib\site-packages\numpy\lib\function_base.pyc in histogramdd(sample, bins, range, normed, weights)
279 # Sample is a sequence of 1D arrays.
280 sample = atleast_2d(sample).T
--> 281 N, D = sample.shape
282
283 nbin = empty(D, int)
ValueError: too many values to unpack
これが私が達成しようとしていることです:
私は2つの配列を持っています。1 つの配列は、土地被覆クラスを表す地理データセット (ラスター) から取得されます (例: 1 = 木、2 = 草、3 = 建物など)。もう 1 つの配列は、ある種の政治的境界 (区画、国勢調査区、町など) を表す地理データセット (ラスター) から取得されます。各固有の政治的境界エリア (配列値は固有の ID を表します) を行としてリストし、各土地被覆クラスの各境界内のピクセルの総数を列としてリストするテーブルを取得しようとしています。