0
votes

TypeError: UfunC 'Isfinite' Non pris en charge pour les types d'entrée et les entrées ne pouvaient pas être forcées en toute sécurité

Pouvez-vous m'aider s'il vous plaît corriger le code indiqué ci-dessous?

entrée:

r : la matrice de notation, une matrice de forme NUMPY de la forme M par n. Si la note est inconnue, le nombre n'est pas.

sortie:

B : la matrice de masquage binaire, une matrice de forme numpie flottante de forme M par n.

  • Si r [i, j] n'est pas manquant, b [i, j] = 1
  • Si r [i, j] est manquant (aucun), b [i, j] = 0

    [code] xxx


5 commentaires

Les numéros manquants ne sont ni nan?


Certains des éléments de la matrice numpy sont «aucun»


@Vishawv. Cela signifie que vous n'avez pas de matrice flottante. S'il vous plaît poster un exemple reproductible.


@Madphysiciste. Ici, bro, r = np.array ([[4., 5., 3., Aucun, 1.], [Aucun, 2., 3., 2., 3.], [5., Aucun, 1. , 2., Aucun]])


Bonjour, j'ai résolu le problème. Merci de votre aide.


3 Réponses :


0
votes

Si r code> est en effet un tableau à point flottant, il peut contenir des éléments nan code>, pas Aucun code>. Vous n'avez pas besoin d'une boucle pour créer un masque d'un tableau NUMPY:

B = ~np.isnan(R)


2 commentaires

Bonjour, il dit maintenant ufunc: 'isnan' non pris en charge pour les types d'entrée. Le boîtier de test pour R est un tableau NUMPY avec 'Aucun' comme élément de certains endroits et de certains nombres dans les autres endroits.


@Vishawv. Quel est le dttype?



0
votes

[code] xxx


1 commentaires

Voici quelques directives pour Comment puis-je écrire une bonne réponse? . Cette réponse fournie peut être correcte, mais elle pourrait bénéficier d'une explication. Les réponses de code seulement ne sont pas considérées comme des réponses «bonnes». De Examiner .



0
votes
In [177]: R.astype(float)                                                       
Out[177]: 
array([[ 4.,  5.,  3., nan,  1.],
       [nan,  2.,  3.,  2.,  3.],
       [ 5., nan,  1.,  2., nan]])
In [178]: np.isnan(R.astype(float))                                             
Out[178]: 
array([[False, False, False,  True, False],
       [ True, False, False, False, False],
       [False,  True, False, False,  True]])
In [179]: np.where(np.isnan(R.astype(float)),0,1)                               
Out[179]: 
array([[1, 1, 1, 0, 1],
       [0, 1, 1, 1, 1],
       [1, 0, 1, 1, 0]])

1 commentaires

@hapulj, oui cela fait le sens total et fonctionne parfaitement bien. Merci.