2

長さの異なる行を持つ numpy で行列 (たとえばm )を定義する方法はありますが、 mは 2 次元のまま (iemndim = 2) になりますか?

たとえば、m = numpy.array([[1,2,3], [4,5]])と定義すると、m.ndim = 1 となります。なぜこうなるのかは理解できますが、あるなら興味があります。 numpy をだましてmを 2D として表示させる方法。行が同じサイズになるようにダミー値をパディングするというアイデアもありますが、そのような行列がたくさんあり、スペースを取りすぎてしまいます。mが 2D であることが本当に必要な理由は、Theano で作業していて、 mの値が与えられるテンソルが2D 値を期待しているためです。

4

2 に答える 2

1

いいえ、これは不可能です。NumPy 配列は、次元のすべてのペアで長方形である必要があります。これは、ポインタ、アイテムサイズ、ストライド トリプルとしてメモリ バッファにマップする方法によるものです。

これがスペースをnp.array([[1,2,3], [4,5]])占有することについては、Pythonリストへの2つのポインターの配列であるため、実際には2×3配列よりも多くのスペースを占有します(要素が配列に変換されたとしても、メモリレイアウトは依然として非効率的です)。

于 2014-06-13T10:47:55.023 に答える