18

プログラムはなぜ

import numpy as np

c = np.array([1,2])
print(c.shape)
d = np.array([[1],[2]]).transpose()
print(d.shape)

与える

(2,)
(1,2)

その出力として?そうじゃないかな

(1,2)
(1,2)

代わりは?私はpython 2.7.3とpython 3.2.3の両方でこれを得ました

4

5 に答える 5

17

.shapea の属性を呼び出すndarrayと、配列の次元と同じ数の要素を持つタプルが得られます。長さ、つまり行数は、最初の次元です ( shape[0])

  • 配列から始めます : c=np.array([1,2])。これは単純な 1D 配列なので、その形状は 1 要素のタプルになりshape[0]、要素の数になります。c.shape = (2,)
  • を考慮してくださいc=np.array([[1,2]])。これは 1 行の 2D 配列です。最初で唯一の行は です[1,2]。これにより、2 つの列が得られます。したがってc.shape=(1,2)len(c)=1
  • を考慮してくださいc=np.array([[1,],[2,]])。2 行 1 列の別の 2D 配列:c.shape=(2,1)len(c)=2.
  • 考えてみてくださいd=np.array([[1,],[2,]]).transpose(): この配列は と同じなnp.array([[1,2]])ので、その形状は(1,2)です。

もう 1 つの便利な属性は.size次のとおりです。これは、すべての次元にわたる要素の数であり、配列にはc c.size = np.product(c.shape).

形状の詳細については、ドキュメントを参照してください。

于 2012-10-01T07:48:57.767 に答える
1

len(c.shape)配列の「深さ」です。

の場合c、配列は単なるリスト(ベクトル)であり、深さは1です。
の場合d、配列はリストのリストであり、深さは2です。

ノート:

c.transpose()
# array([1, 2])

これはそうではないdので、この動作は矛盾していません。

dt = d.transpose()
# array([[1],
#        [2]])
dt.shape # (2,1)
于 2012-09-30T22:56:00.283 に答える
0

transpose配列の次元数は変更されません。の場合c.ndim == 1c.transpose() == c。試す:

c = np.array([1,2])
print c.shape
print c.T.shape
c = np.atleast_2d(c)
print c.shape
print c.T.shape
于 2012-10-01T19:23:26.420 に答える