6
votes

Que signifie [i ,:] en Python?

J'ai donc terminé une partie de ce devoir que je dois faire. Il n'y a qu'une seule partie de la mission qui n'a aucun sens pour moi.

Je suis en train de faire un modèle de régression linéaire et selon d'autres, je dois appliquer ans [i ,:] = y_poly à la toute fin, mais je n'ai jamais eu de réponse pour savoir pourquoi.

Quelqu'un peut-il m'expliquer ce que signifie [i ,:] ? Je n'ai trouvé aucune explication en ligne.


1 commentaires

notation de découpage numpy. Je n'ai pas trouvé de bon double. Si quelqu'un en trouve un, j'ai ajouté la balise "python" pour que vous puissiez dupehammer ...


3 Réponses :


7
votes

C'est spécifique au module numpy , utilisé dans la plupart des modules de science des données.

>>> import numpy
>>> a = numpy.array([[0,0,0],[1,1,1]])
>>> a[0,:] = [3,4,5]
>>> a
array([[3, 4, 5],
       [1, 1, 1]])

il s'agit d'attribuer un vecteur à une tranche de tableau 2D numpy (attribution de tranche) . Exemple autonome:

ans[i,:] = y_poly

Il existe également une attribution de tranche en python de base, en utilisant une seule dimension ( a [:] = [1,2,3] )


3 commentaires

Ok merci, ça aide, j'ai une boucle for qui dit: for i, degree in enumerate ([1,3,6,9]). Je comprends donc à quoi sert le découpage 2D.


Même si j'ai aussi réalisé que je peux obtenir les mêmes réponses sans la virgule (et [i:]).


a [0 ,:] est différent de a [0:] . Le second copie le vecteur dans toutes les lignes.



4
votes

Je suppose que vous utilisez également numpy pour manipuler des données (en tant que matrice)?

Si basé sur numpy , ans [i ,:] signifie sélectionner la ith 'ligne' de ans avec toutes ses «colonnes». Notez que lorsque nous traitons des tableaux numpy, nous devrions (presque) toujours utiliser [i, j] au lieu de [i] [j] . Cela peut être contre-intuitif si vous avez déjà utilisé Python ou Java pour manipuler la matrice.


0 commentaires

3
votes

Je pense que dans ce cas [] signifie que l'opérateur d'indexation d'un objet de classe peut être utilisé en définissant la méthode getitem

class A:
    values = [[1,2,3,4], [4,5,6,7]]
    def __getitem__(self, key):
        i, j = key
        if isinstance(i, int):
            i = slice(i, i + 1)
        if isinstance(j, int):
            j = slice(j, j + 1)
        for row in self.values[i]:
            print(row[j])

>>>a = A()
>>>a[:,2:4]
[3, 4]
[6, 7]
>>>a[1,1]
[5]
>>>a[:, 2]
[3]
[6]

La clé peut être littéralement n'importe quoi . Dans votre cas, la clé "[1 ,:]" est un tuple contenant "1" et une tranche (Aucun, Aucun, Aucun). Une telle clé peut être utile si votre classe représente des données multidimensionnelles auxquelles vous souhaitez accéder via l'opérateur []. Une suggestion d'autres réponses pourrait être un tableau numpy:

Voici un exemple rapide de la façon dont une telle indexation multidimensionnelle pourrait fonctionner:

class A:
    def __getitem__(self, key):
        pass

p >


0 commentaires