Je suis en train de tester khicas en faisant un petit calcul sur des tableaux "array". J'ai donc fait un programme Python et crée un fichier numpy.py avec le code que j'ai trouvé sur le forum. J'ai mis ces deux fichiers dans le répertoire Xcas pour pouvoir les lancer.
Le code que je veux tester est le suivant :
- Code: Tout sélectionner
import numpy as np
X = np.array([[-2,4,-1], [4,1,-1], [1,6,-1], [2,4,-1], [6,2,-1]])
y = np.array([-1,-1,1,1,1])
def perceptron_sgd(X,y):
w = np.zeros(len(X[0]))
eta = 1
epochs = 20
for t in range(epochs):
for i,x in enumerate(X):
if (np.dot(X[i], w)*y[i])<=0:
w=w+eta*X[i]*y[i]
return w
w = perceptron_sgd(X,y)
print(w)
Khicas bloque sur la ligne
- Code: Tout sélectionner
if (np.dot(X[i], w)*y[i])<=0:
File "numpy.py.tns", line 17, in __mul__
ValueError: Wrong type of 1st argument.
Le .dot() de mon programme utilise bien la méthode __mul__ de la classe array de numpy.py :
- Code: Tout sélectionner
def __mul__(self,other):
if type(self)==array:
if type(other)==array:
return array(linalg.mul(self.a,other.a))
return array(linalg.mul(self.a,other))
return array(linalg.mul(self,other.a))
Pourtant X et y sont bien des array. Et de toute façon, le code de numpy.py semble gérer tous les cas.
Avez-vous une idée d'où vient le problème ?
rmarion37