2016-04-03 368 views
1

2つの多項式を2進形式(それぞれnewdataとproofin)で分割するコードを記述しようとしています。私は、コードを実行すると、しかし、私が手:IndexError:0のインデックス0の軸0のサイズが0です。

IndexError: index 0 is out of bounds for axis 0 with size 0 

は、これはコードです:

import numpy as np 


def transformation_for_numpy_of_o(): 
    newdata = ("101001") 
    freshdata = list(newdata) 
    freshdatapoly = [] 

    for n in freshdata: 
     if n == 1: 
      freshdatapoly.append(1.0) 
     if n == 0: 
      freshdatapoly.append(0.0) 

    freshdatapoly = np.array(freshdatapoly) 

    return freshdatapoly 


def transformation_for_numpy_of_proof(): 
    proofin = ("101001") 
    proofing = list(proofin) 
    proofpoly = [] 

    for n in proofing: 
     if n == 1: 
      proofpoly.append(1.0) 
     if n == 0: 
      proofpoly.append(0.0) 

    proofpoly = np.array(proofpoly) 

    return proofpoly 


def total(): 
    # Based on http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.polydiv.html 

    o_transformed = transformation_for_numpy_of_o() 
    proof_transformed = transformation_for_numpy_of_proof() 

    numer = np.array(o_transformed) 
    denomin = np.array(proof_transformed) 
    answer = np.polydiv(numer, denomin) 

    print (answer) 

total() 

私はnumpyのために新しいですし、このエラーを理解していません。これをどうすれば解決できますか?


* EDIT:全体のトレースバック、要求通り:あなたnp.array(proofpoly)同じfreshdatapolyに適用されたときに

/Users/M/anaconda/envs/Invictus/bin/python/Users/Max/PycharmProjects/1/Origin 
Traceback (most recent call last): 
    File "/Users/M/PycharmProjects/1/Origin", line 49, in <module> 
    total() 
    File "/Users/M/PycharmProjects/1/Origin", line 46, in total 
    answer = np.polydiv(numer, denomin) 
    File "/Users/M/anaconda/envs/Invictus/lib/python3.5/site-packages/numpy/lib/polynomial.py", line 895, in polydiv 
    w = u[0] + v[0] 
IndexError: index 0 is out of bounds for axis 0 with size 0 
Process finished with exit code 1 
+1

トレースバック全体を投稿することは可能でしょうか? – iLoveTux

+0

完了。ありがとうございました。 – nosn

答えて

2

proofpolyので、Trueに評価されませんです、あなたので、もしあなたがint型と文字列を比較しているが、常に空です

変更freshdataと校正:

freshdata = map(int,"101001") 
proofing = list(map(int,"101001")) 

あなただけの各intのリスト作り、それらを作成するので:あなたはそれを実行したときに

import numpy as np 


def transformation_for_numpy_of_o(): 
    freshdata = [1,0,1,0,0,1] 
    freshdatapoly = [] 
    for n in freshdata: 
     if n == 1: 
      freshdatapoly.append(1.0) 
     if n == 0: 
      freshdatapoly.append(0.0) 
    return np.array(freshdatapoly) 


def transformation_for_numpy_of_proof(): 
    proofing = [1, 0, 1, 0, 0, 1] 
    proofpoly = [] 
    for n in proofing: 
     if n == 1: 
      proofpoly.append(1.0) 
     if n == 0: 
      proofpoly.append(0.0) 
    return np.array(proofpoly) 

は今、あなたは結果を得る:

In [2]: total() 
(array([ 1.]), array([ 0.])) 

はたぶんもっと私たちが見ることができない存在であるが、現在のコードです相当:

def transformation_for_numpy_of_o(): 
    freshdata = [1,0,1,0,0,1] 
    return np.array(freshdata) 

def transformation_for_numpy_of_proof(): 
    proofing = [1, 0, 1, 0, 0, 1] 
    return np.array(proofing) 

他の可能な値がある場合、あなたはまだリストカンプを使用することができます

def transformation_for_numpy_of_proof(): 
    proofing = [1, 0, 4,5,1, 0, 0, 1, 4,3,5] 
    return np.array([i for i in proofing if i in {1,0}]) 
関連する問題