ファイルから多次元numpy
配列にデータを読み取る関数を実装しています。データは次元の長さの意味で規則的に構造化されていますが、一部の次元が欠落している可能性があります。その場合、その次元の長さは0
. だから私はこの振る舞いに出くわしました:
In [1]: np.random.random((3,3))
Out[1]:
array([[ 0.59756568, 0.47198749, 0.23442854],
[ 0.29374254, 0.58289927, 0.40497268],
[ 0.00481053, 0.63471263, 0.90053086]])
In [2]: np.random.random((0,3,3))
Out[2]: array([], shape=(0, 3, 3), dtype=float64)
OK、空の配列を取得します。これは、2 次元と 3 次元が 1 次元のサブセットであり、nil であるため、配列全体が nil であるため、これを見ると理にかなっています。np.random.random((3,3,0))
ただし、と同等であると期待していますnp.random.random((3,3))
。でも、
In [3]: np.random.random((3,3,0))
Out[3]: array([], shape=(3, 3, 0), dtype=float64)
再び空の配列。
これは予想される動作ですか?np.array((3,3))
とnp.array((3,3,1))
またはの違いは理解していますが、長さの次元がその次元だけでなく配列全体を縮退np.array((1,3,3))
させる理由の説明を探しています。0
それは私だけですか、それともこれは Python/numpy WTF の 1 つですか?