2016-04-03 9 views
1

Ich versuche, einen Code zu schreiben, um zwei Polynome in binärer Form (newdata und proofin) zu teilen. Wenn ich den Code ausführen, jedoch erhalte ich:IndexError: Index 0 ist außerhalb der Grenzen für Achse 0 mit der Größe 0

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

Dies ist der Code:

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() 

Ich bin neu in numpy und verstehen nicht, diesen Fehler. Wie kann ich das beheben?


* EDIT: Entire Traceback, wie gewünscht:

/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

Wäre es möglich, den gesamten Traceback zu buchen? – iLoveTux

+0

Fertig. Vielen Dank. – nosn

Antwort

2

Sie vergleichen ints und String so Ihre wenn nie daher auf True bewerten proofpoly ist immer leer, wenn Sie np.array(proofpoly) gleich freshdatapoly gilt:

ändern freshdata und Proofing:

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

Da Sie erstellen sie machen nur jeweils eine Liste von Ints:

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) 

Nun, wenn Sie es ausführen erhalten Sie ein Ergebnis:

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

Vielleicht gibt es mehr können wir nicht sehen, aber zur Zeit ist der Code äquivalent zu:

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) 

Wenn es andere Werte sind möglich verwenden Sie können immer noch eine Liste comp:

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}]) 
Verwandte Themen