Ich versuche, einen Code zu erstellen, der Ganzzahlen in einem Array in eine gegebene Basis umwandelt und sie auffüllt, um sie auf die gleiche Größe zu bringen. Der folgende Code, den ich von einem Code auf stackoverflow von Alex Martelli manipuliert habe, funktioniert nicht, wenn ich numpy.vectorize
darauf anwende, obwohl es für einzelne Arrays funktioniert:
def int2base(x, base,size):
ret=np.zeros(size)
if x==0: return ret
digits = []
while x:
digits.append(x % base)
x /= base
digits.reverse()
ret[size-len(digits):]=digits[:]
return ret
vec_int2base=np.vectorize(int2base)
vec_int2base(np.asarray([2,1,5]),base=3,size=3)
Was mit folgendem Fehler endet:
...
1640 if ufunc.nout == 1:
1641 _res = array(outputs,
-> 1642 copy=False, subok=True, dtype=otypes[0])
1643 else:
1644 _res = tuple([array(_x, copy=False, subok=True, dtype=_t)
ValueError: setting an array element with a sequence.
Gibt es einen besseren Weg, um ihn für den Vektorenfall zu schreiben, und was fehlt mir hier?