ndarray
NumPy でコピーを作成せずに、特定の軸に沿って多次元配列 (つまり、型) を平坦化する方法があるかどうか疑問に思っています。たとえば、2D 画像の配列があり、それぞれをベクトルにフラット化したいと考えています。したがって、これを行う簡単な方法の 1 つは ですがnumpy.array([im.flatten() for im in images])
、これはそれぞれのコピーを作成します。
質問する
10301 次
2 に答える
15
ravel
それ:
>>> a = numpy.arange(25).reshape((5, 5))
>>> b = a.ravel()
>>> b[0] = 55
>>> a
array([[55, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
またはreshape
それ:
>>> a = numpy.arange(27).reshape((3, 3, 3))
>>> b = a.reshape((9, 3))
>>> b[0] = 55
>>> a
array([[[55, 55, 55],
[ 3, 4, 5],
[ 6, 7, 8]],
[[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]],
[[18, 19, 20],
[21, 22, 23],
[24, 25, 26]]])
ほとんどの場合、これらはどちらもコピーではなく、元の配列のビューを返します。
于 2012-04-07T05:17:16.090 に答える
7
入力配列の形状がわからない場合:
images.reshape((images.shape[0], -1))
-1
reshape に残りの次元を計算するよう指示します。これは、画像の最初の軸を平坦化することを前提としています。
于 2013-07-26T12:58:33.767 に答える