2012-04-17 7 views
26

私はプログラムを1行ずつ細かく分割しようとしています。 Yはデータの行列ですが、具体的なデータは何も見つかりません.shape[0]は正確に行います。.shape []は "for i in range(Y.shape [0])"で何をしますか?

for i in range(Y.shape[0]): 
    if Y[i] == -1: 

このプログラムは、numpy、scipy、matplotlib.pyplot、およびcvxoptを使用します。

+4

http://docs.scipy.org/doc/numpy/reference/generated/numpy.ma.shape.htmlで与えられますか、 http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.shape.html#numpy.ndarray.shape –

答えて

61

numpyアレイのshape属性は、配列の寸法を返します。 Ynの行とmの列を持つ場合、Y.shape(n,m)です。従ってY.shape[0]nです。

In [46]: Y = np.arange(12).reshape(3,4) 

In [47]: Y 
Out[47]: 
array([[ 0, 1, 2, 3], 
     [ 4, 5, 6, 7], 
     [ 8, 9, 10, 11]]) 

In [48]: Y.shape 
Out[48]: (3, 4) 

In [49]: Y.shape[0] 
Out[49]: 3 
6

shapeあなたの配列の次元の数の指標を与えるタプルです。したがって、あなたの場合、インデックス値Y.shape[0]は0なので、配列の最初の次元に沿って作業しています。

http://www.scipy.org/Tentative_NumPy_Tutorial#head-62ef2d3c0a5b4b7d6fdc48e4a60fe48b1ffe5006

An array has a shape given by the number of elements along each axis: 
>>> a = floor(10*random.random((3,4))) 

>>> a 
array([[ 7., 5., 9., 3.], 
     [ 7., 2., 7., 8.], 
     [ 6., 8., 3., 2.]]) 

>>> a.shape 
(3, 4) 

http://www.scipy.org/Numpy_Example_List#shape からいくつかのより多くの 例があります。

+0

素晴らしい感謝のLevon! – HipsterCarlGoldstein

+1

@HipsterCarlGoldsteinこれらの回答のいずれかがあなたの問題を解決した場合には、 [ の回答の隣にあるチェックマークをクリックして受け入れることを検討してください](http://meta.stackexchange.com/questions/5234/how -does-accepting-an-answer-work/5235#5235)。これは あなたと回答者の両方のいくつかのポイントを与え、またこの 問題を解決しました - ありがとうございます。 – Levon

22

形状は..アレイの寸法を与えるタプル

>>> c = arange(20).reshape(5,4) 
>>> c 
array([[ 0, 1, 2, 3], 
     [ 4, 5, 6, 7], 
     [ 8, 9, 10, 11], 
     [12, 13, 14, 15], 
     [16, 17, 18, 19]]) 

c.shape[0] 
5 

c.shape[1] 
4 

の数は、Python shape()の列

0

の数を与える与えるパンダにおいて使用され行/列の数を与える:

行の数Sは次式で与えられます。列の

train = pd.read_csv('fine_name') //load the data 
train.shape[0] 

数は

train.shape[1]