587

パラメータ -1 を指定した reshape 関数を使用して、numpy 行列をベクトルに再形成できます。しかし、ここで -1 が何を意味するのかわかりません。

例えば:

a = numpy.matrix([[1, 2, 3, 4], [5, 6, 7, 8]])
b = numpy.reshape(a, -1)

の結果bは次のとおりです。matrix([[1, 2, 3, 4, 5, 6, 7, 8]])

ここで -1 の意味を知っている人はいますか? そして、 python assign -1 などのいくつかの意味があるようです:array[-1]最後の要素を意味します。説明してもらえますか?

4

11 に答える 11

67

によるとthe documentation

newshape : int または int のタプル

新しい形状は、元の形状と互換性がある必要があります。整数の場合、結果はその長さの 1 次元配列になります。1 つの形状の次元は-1 にすることができます。この場合、値は配列の長さと残りの次元から推測されます。

于 2013-09-09T03:27:07.000 に答える
21
numpy.reshape(a,newshape,order{})

詳細については、以下のリンクを確認してください。 https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html

以下の例では、出力は結果のベクトルが単一の行であると説明しています。(-1) は行数が 1 であることを示します。

a = numpy.matrix([[1, 2, 3, 4], [5, 6, 7, 8]])
b = numpy.reshape(a, -1)

出力:

matrix([[1, 2, 3, 4, 5, 6, 7, 8]])

これは、別の例でより正確に説明できます。

b = np.arange(10).reshape((-1,1))

output:(1 次元の列配列です)

array([[0],
       [1],
       [2],
       [3],
       [4],
       [5],
       [6],
       [7],
       [8],
       [9]])

また

b = np.arange(10).reshape((1,-1))

output:(1 次元の行配列です)

array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
于 2017-01-02T16:41:36.430 に答える
3

この記事np.reshape()を読むまで、何が何をするのか理解できませんでした。

機械的には、何reshape()が機能するかは明らかです。しかし、形状変更前後のデータをどのように解釈すればよいのでしょうか?

私にとって欠けていたのは:

機械学習モデルをトレーニングするとき、配列のネスト レベルには正確に定義された意味があります。

これは、操作が意味を持つ前に、reshape 操作が以下の両方の点を鋭く認識している必要があることを意味します。

  • 操作対象のデータ (reshape 入力がどのように見えるか)
  • アルゴリズム/モデルが再整形されたデータをどのように期待するか (再整形出力がどのように見えるか)

例えば:

外部配列には観測値/行が含まれています。内側の配列には、列/機能が含まれています。これにより、1 つの特徴のみの複数の観測の配列または複数の特徴の単一の観測のいずれかがある場合に、2 つの特殊なケースが発生します。

より高度な例については、このstackoverflowの質問を参照してください

于 2021-01-26T02:46:08.560 に答える