builtins.TypeError: int() argument must be a string, a bytes-like object or a number, not 'zip'
Verfasst: Donnerstag 13. Mai 2021, 14:46
Hallo liebes Forum,
vorab: Ich bin neu hier und entschuldige mich, falls ich etwaige Gepflogenheiten übersehen sollte. Ich habe ein wenig Programmiererfahrung in C# und in Matlab. In Python versuche ich mich allerdings erst noch einzuarbeiten. Ich beschäftige mich derzeit mit Portfolio-Optimierung und bin auf einen theoretisch fertigen Code gestoßen, den ich sehr interessant finde http://dspace.library.uu.nl/handle/1874/345758.
Ich glaube, mit dem könnte man ganz gut weiter herumspielen
Da der Verfasser eine CSV-Datei übergibt, wollte ich stattdessen erstmal per Hand Daten mitgeben. Soweit so gut. Dabei muss ich etwas Grundlegendes übersehen haben:
Ich benutze Python 3.8.8. und meine "main" sieht stattdessen einfach so aus:
Von den Dimensionen her wurde im Text geschrieben, dass "mean, lB und uB" Vektoren (4x1)-Vektoren sein sollen und "covar" eine (4x4)-Matrix.
Jetzt kommt aber folgender Fehler:
Traceback (most recent call last):
File "C:/Users/rodef/Desktop/code/bache.py", line 50, in <module>
main()
File "C:/Users/rodef/Desktop/code/bache.py", line 34, in <module>
cla.solve()
File "C:\Users\rodef\Desktop\code\CLA.py", line 18, in solve
f,w=self.initAlgo()
File "C:\Users\rodef\Desktop\code\CLA.py", line 80, in initAlgo
a[:]=zip(range(self.mean.shape[0]),b) # fill structured array
builtins.TypeError: int() argument must be a string, a bytes-like object or a number, not 'zip'
Wenn ich das weiter verfolge, dann sieht die nun problematische Funktion so aus:
Soweit ich das sehe, werden die beiden Arrays einfach nur zusammengefügt. Das einzige was ich geändert habe, waren die Inputparamter. Habe ich einen Dimensionsfehler kreiert, sodass er "a" nicht sauber füllen kann?
Viele Grüße und Danka im Voraus
vorab: Ich bin neu hier und entschuldige mich, falls ich etwaige Gepflogenheiten übersehen sollte. Ich habe ein wenig Programmiererfahrung in C# und in Matlab. In Python versuche ich mich allerdings erst noch einzuarbeiten. Ich beschäftige mich derzeit mit Portfolio-Optimierung und bin auf einen theoretisch fertigen Code gestoßen, den ich sehr interessant finde http://dspace.library.uu.nl/handle/1874/345758.
Ich glaube, mit dem könnte man ganz gut weiter herumspielen
Da der Verfasser eine CSV-Datei übergibt, wollte ich stattdessen erstmal per Hand Daten mitgeben. Soweit so gut. Dabei muss ich etwas Grundlegendes übersehen haben:
Ich benutze Python 3.8.8. und meine "main" sieht stattdessen einfach so aus:
Code: Alles auswählen
def main():
import numpy as np
import CLA
covar = np.array([ [0.000246, 0.000084, 0.000122, 0.000142], [0.000084, 0.000219, 0.000085, 0.000092], [0.000122, 0.000085, 0.000221, 0.000176], [0.000142, 0.000092, 0.000176, 0.000333] ])
mean = np.array([[0.3612, 0.1626, 0.1554, 0.2959]]).T
lB = np.array([[0,0,0,0]]).T
uB = np.array([[1,1,1,1]]).T
#3) Invoke object
cla=CLA.CLA(mean,covar,lB,uB)
cla.solve()
...
Jetzt kommt aber folgender Fehler:
Traceback (most recent call last):
File "C:/Users/rodef/Desktop/code/bache.py", line 50, in <module>
main()
File "C:/Users/rodef/Desktop/code/bache.py", line 34, in <module>
cla.solve()
File "C:\Users\rodef\Desktop\code\CLA.py", line 18, in solve
f,w=self.initAlgo()
File "C:\Users\rodef\Desktop\code\CLA.py", line 80, in initAlgo
a[:]=zip(range(self.mean.shape[0]),b) # fill structured array
builtins.TypeError: int() argument must be a string, a bytes-like object or a number, not 'zip'
Wenn ich das weiter verfolge, dann sieht die nun problematische Funktion so aus:
Code: Alles auswählen
def initAlgo(self):
# Initialize the algo
#1) Form structured array
a=np.zeros((self.mean.shape[0]),dtype=[('id',int),('mu',float)])
b=[self.mean[i][0] for i in range(self.mean.shape[0])] # dump array into list
a[:]=zip(range(self.mean.shape[0]),b) # fill structured array
#2) Sort structured array
b=np.sort(a,order='mu')
#3) First free weight
i,w=b.shape[0],np.copy(self.lB)
while sum(w)<1:
i-=1
w[b[i][0]]=self.uB[b[i][0]]
w[b[i][0]]+=1-sum(w)
return [b[i][0]],w
Viele Grüße und Danka im Voraus