プログラムはなぜ
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の両方でこれを得ました
.shape
a の属性を呼び出す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)
.
形状の詳細については、ドキュメントを参照してください。
len(c.shape)
配列の「深さ」です。
の場合c
、配列は単なるリスト(ベクトル)であり、深さは1です。
の場合d
、配列はリストのリストであり、深さは2です。
ノート:
c.transpose()
# array([1, 2])
これはそうではないd
ので、この動作は矛盾していません。
dt = d.transpose()
# array([[1],
# [2]])
dt.shape # (2,1)
transpose
配列の次元数は変更されません。の場合c.ndim == 1
、c.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