6

histogramdd の出力が紛らわしいと思います。例えば:

h, edges = histogramdd([[1,2,1],[4,2,1]],bins=2)

h -> [[ 1.  1.]
     [ 1.  0.]]
edges -> [array([ 1. ,  1.5,  2. ]), array([ 1. ,  2.5,  4. ])]

多分私はドキュメンテーションNを理解していませんが、入力はデータポイントを表す行と次元を表す列を持つ配列でなければならないことを示唆しているようですD(したがって、この場合、3次元の2つのデータポイントを扱っています)そして私は推測しますの各配列はedges異なる次元を表しますが、出力に基づいて意味をなさないようですh

これはどう解釈すればよいのでしょうか。

ありがとう

4

1 に答える 1

9

アップデート

前回間違えました。これが、histogramdd の正しい解釈です。まず第一に、histogramdd で配列を使用することが非常に重要です。そうしないと、誤った結果が出力されます。

これを比較してください:

In [59]: h, edges = histogramdd([[1,2,4],[4,2,8],[3,2,1],[2,1,2],[2,1,3],[2,1,1],[2,1,4]],bins=3)
h.shape
Out[59]: (3, 3, 3, 3, 3, 3, 3)

これに:

In [60]: h, edges = histogramdd(array([[1,2,4],[4,2,8],[3,2,1],[2,1,2],[2,1,3],[2,1,1],[2,1,4]]),bins=3)
h.shape
Out[60]: (3, 3, 3)

2 番目のアプローチを使用すると、適切な結果が得られます。

In [61]: h, edges = histogramdd(array([[1,2,4],[4,2,8],[3,2,1],[2,1,2],[2,1,3],[2,1,1],[2,1,4]]),bins=3)
In [64]: h
Out[64]:
array([[[ 0.,  0.,  0.],
        [ 0.,  0.,  0.],
        [ 0.,  1.,  0.]],

       [[ 3.,  1.,  0.],
        [ 0.,  0.,  0.],
        [ 0.,  0.,  0.]],

       [[ 0.,  0.,  0.],
        [ 0.,  0.,  0.],
        [ 1.,  0.,  1.]]])
In [65]: edges
Out[65]:
[array([ 1.,  2.,  3.,  4.]),
 array([ 1.        ,  1.33333333,  1.66666667,  2.        ]),
 array([ 1.        ,  3.33333333,  5.66666667,  8.        ])]

入力は[1,2,4], [4,2,8], etcです。エッジは、各次元のビンを表します。この例で[1,2,4]は、 は次のようにカウントされます: 1 はarray([1.,2.,3.,4.])1 と 2 の間にあるため の最初のビンに属し、2 はarray([ 1. , 1.33333333, 1.66666667, 2. ])1.6666667 と 2 の間にあるため の 3 番目のビンに属し、4 はarray([ 1. , 3.33333333, 5.66666667, 8. ])3.33333333 と 5.66666667 の間にあるための 2 番目のビンに属します。 . したがって、ポイントの座標の最初のビン、3 番目のビン、および 2 番目のビンがあります[1,2,4]。これは、最初の配列、3 行目、2 列目の要素をカウントしていることを意味します。

[[ 0.,  0.,  0.],
[ 0.,  0.,  0.],
[ 0.,  1*.,  0.]] 

* を追加して、より簡単に識別できるようにしました。2 番目の座標[4,2,8]は、それぞれ x、y、z の 3 番目のビン、3 番目のビン、および 3 番目のビンにあります (3 番目の配列、3 番目の行、3 番目の列)。

[[ 0.,  0.,  0.],
[ 0.,  0.,  0.],
[ 1.,  0.,  1.*]]])

最後の例として、3 番目の座標[3,2,1]は、それぞれ x、y、z の 3 番目のビン、3 番目のビン、1 番目のビンにあります (3 番目の配列、3 番目の行、1 列目)。

[[ 0.,  0.,  0.],
 [ 0.,  0.,  0.],
 [ 1.*,  0.,  1.]]
于 2012-11-06T04:06:35.083 に答える