ufunc 'ajouter' ne contient pas de boucle avec la signature de l'appariement de type dtype ('S32') ('S32') ('S32')
J'essaie de l'exécuter quelqu'un script pour certaines simulations que j'ai fait pour essayer de traçage des histogrammes, mais quand je le fais, je reçois toujours le message d'erreur mentionné ci-dessus. Je n'ai aucune idée de ce qui va mal.
Voici la complète traçabilité en amont d'erreur que je reçois:
File "AVAnalyse.py", line 205, in <module>
f.write(line[0]+' '+line[1]+' '+line[2]+' '+line[3])
TypeError: ufunc 'add' did not contain a loop with signature matching types dtype('S32') dtype('S32') dtype('S32')
C'est le code que je suis en train de lancer:
name_out = "histogram_"+donor+"_"+acceptor+".dat"
f = open(name_out,'w')
f.write('distance d.probability efficiency e.probability')
for line in dist_hist:
f.write(line[0]+' '+line[1]+' '+line[2]+' '+line[3])
f.close()
print "data saved in " +"histogram_"+donor+"_"+acceptor+".dat"
Toute aide/explication de ce que je suis mal serait grandement apprécié! Je vous remercie à l'avance!
Nous montrer la
Montrer
le
Je veux voir ce que
shape
et dtype
pour line
ou dist_hist
. Je soupçonne line[0]
est un tableau avec "S32' dtype, pas seulement un élément de chaîne d'un tel tableau.dist_hist = zeroes((bins,4))
et est dans le script 5 fois de plus, mais je ne suis pas sûr de ce que cela signifie, ici, sont les autres fois où il est mentionné d'autres de la ligne dans l'original question dist_hist[index_ef,3] += hist_add
dist_hist[index,1] += hist_add
dist_hist[:,0] = arange(mini,maxi,(maxi-mini)/(float(bins)-0.5))
dist_hist[:,2] = arange(mine,maxe,(maxe-mine)/(float(bins)-0.5))
–Montrer
print(line)
.le
print(line)
avant que le script ci-dessus est print "average distance between dyes is ", average_distance/(len(data[::step])*len(datd[::step]))
tandis que la ligne suivante avec l'impression est dans la question. Je suis désolé si je suis un malentendu et je vous remercie d'essayer de vous aider!Je veux voir ce que
line
ressemble sans la problématique de la mise en forme de chaîne.OriginalL'auteur R.Tav | 2017-01-25
Vous devez vous connecter pour publier un commentaire.
Il semble que
line[0]
,line[1]
,line[2]
,line[3]
sont des éléments dedist_hist
.dict_hist
est unnumpy.ndarray
. Les éléments dedict_hist
a un type numérique (commenp.float64
) (sur la base des calculs à partir de votre fichier joint). Vous essayez d'ajouter des éléments de types différents:np.float64
etstr
. Si vous souhaitez éviter cetteTypeError
, vous pouvez changer le type deline[0]
,line[1]
,line[2]
,line[3]
à la str.Votre extrait de code devrait ressembler à ceci:
EDIT:
Vous devez remplacer ce bout de code:
à celui-ci:
Avant cela, les chaînes ont été écrites dans le fichier en une seule ligne. Parce que la variable de données de point de tableau vide depuis que nous avons commencer à lire à partir de la 2ème ligne (qui est vide).
Traceback (most recent call last): File "AVAnalyse.py", line 214, in <module> data = loadtxt("histogram_"+donor+"_"+acceptor+".dat") File "/usr/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 930, in loadtxt items = [conv(val) for (conv, val) in zip(converters, vals)] File "/usr/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 659, in floatconv return float(x) ValueError: could not convert string to float: distance
lorsque vous chargez un fichier, vous devez ignorer la première ligne avec des étiquettes de colonnes. Vous devez modifier les données de la ligne = loadtxt("histogram_"+donateur+""+accepteur+".dat") sur des données = loadtxt("histogramme"+donateur+"_"+accepteur+".dat", skiprows=1, delimiter=' '). Nombre de places dans le séparateur doit être égal au nombre d'espaces entre les chiffres .dat fichier.
Merci encore! Qui semble avoir obtenu passé à la ligne suivante, qui, malheureusement, me donne une autre erreur
IndexError: too many indices for array
surplot(data[:,2].data[:,3]/sum(data[:,3]*0.01))
Si près d'avoir fini de données tracées.J'ai écrit une modification à une réponse, et maintenant vous pouvez tracer vos données.
Maintenant, je reçois un message d'erreur indiquant n'a pas pu convertir la chaîne de flotter, mais il m'a donné les données dans un format qui je peux maintenant complot! Merci beaucoup! J'apprécie vraiment votre aide!
OriginalL'auteur Eduard Ilyasov