2016-06-24 2 views
1

私の以前の仕事から、関数にリストをループすることはできますが、リストをループする方法をプロットできません。Pythonで配列の形状が多すぎる

%matplotlib inline 
from pylab import * 
import numpy as np 

with open('/home/../Downloads/combinationplot.txt','rb') as file: 
    a = file.readlines() 


df = pd.read_csv('20130831_000000.csv') 
df = df.fillna(0) 

def createtuple(cola,colb): 
    names = df[str(cola)] 
    names1 = df[str(colb)] 
    X = [] 
    y = [] 
    for i in range(len(names)): 
     if type(names[i])==str or type(names1[i])==str : 
      pass 
     else: 
      X.append([names[i],names1[i]]) 
      y.append(i+1) 

    X = np.array(X) 
    y = np.array(y) 
    return (X,y) 

def plotgraph(): 
    plt.figure(figsize=(10, 6)) 
    plt.scatter(X[:,0], X[:,1],c=y.astype(np.float),alpha=.5) 
    #plt.scatter(X[:,0], X[:,1],c=y.astype(np.float),alpha=.5) names[i] <=float(0) or names1[i]<=float(0) or 
    plt.show() 

for i in range(len(a)): 
    b = a[i].split("'") 
    (X,y) = createtuple(b[1],b[3]) 
    print (X,y) 
    print np.shape(X) 

    plt.figure(figsize=(10, 6)) 

    plt.scatter(X[:,0], X[:,1],c=y.astype(np.float),alpha=.5) 
    #plt.scatter(X[:,0], X[:,1],c=y.astype(np.float),alpha=.5) names[i] <=float(0) or names1[i]<=float(0) or 
    plt.show() 

私は見ていますエラーはこれです:[:0]、X Iは、リスト内のタプルをXと呼ばれている知っている

(0,) 
(array([], dtype=float64), array([], dtype=float64)) 
--------------------------------------------------------------------------- 
IndexError        Traceback (most recent call last) 
<ipython-input-109-1875f2993e46> in <module>() 
    39  plt.figure(figsize=(10, 6)) 
    40 
---> 41  plt.scatter(X[:,0], X[:,1],c=y.astype(np.float),alpha=.5) 
    42  #plt.scatter(X[:,0], X[:,1],c=y.astype(np.float),alpha=.5) names[i] <=float(0) or names1[i]<=float(0) or 
    43  plt.show() 

IndexError: too many indices for array 

<matplotlib.figure.Figure at 0x7f46edb9b9d0> 
In [ ]: 

[:1]それは(取得の何を意味しています0、)の形のX?

答えて

0

X[:, 0]Xに2次元目で参照しようとしていますが、これは1次元配列です。あなたのループは、else節に渡された場合にのみX 2次元を作成します。そうでなければ、1次元のままです。あなたのプリントアウトから、Xは空の1つの薄暗い配列です。したがって、それは決してelse節には入りませんでした。

(0,) 
(array([], dtype=float64), array([], dtype=float64)) 

明らかに、Xは、一次元の、空です。

X = [] # <---one dimension 
    for i in range(len(names)): 
     if type(names[i])==str or type(names1[i])==str : 
      pass 
     else: 
      # if loop never gets here, X will remain one dimensional 
      X.append([names[i],names1[i]]) # <---two dimensions 
      y.append(i+1) 

    X = np.array(X) # <---still one dimension if not passed through else clause 
    y = np.array(y) 
    return (X,y) 

def plotgraph(): 
    plt.figure(figsize=(10, 6)) 
    plt.scatter(X[:,0], X[:,1],c=y.astype(np.float),alpha=.5) 
    #    ^ ^
    #    |  | 
    #   Asking for two 
関連する問題