Conseils pour réfléchir à np.newaxis en Python / Numpy

introduction

Python est un langage de programmation souvent utilisé dans la recherche sur l'apprentissage automatique. Surtout lorsque vous souhaitez l'utiliser dans le domaine de la recherche fondamentale, cela devient souvent difficile à utiliser. En effet, l'écriture de nombreuses instructions for ralentit. Donc, si vous essayez de faire de votre mieux sans écrire une déclaration for, vous rencontrerez divers problèmes, mais j'aimerais vous présenter comment utiliser np.newaxis, avec lequel j'ai eu des problèmes. Vous rencontrerez souvent cela lorsque vous souhaitez expérimenter différents paramètres.

[Python] Numpy Reference, Extraction, Join Indexing - docs.scipy.org

Histoire principale

1. Commençons par comprendre les données à utiliser

Au début, c'est une bonne idée de trier le type de données dont vous disposez et le type d'objectifs que vous souhaitez atteindre. Gardez à l'esprit le type de données, la forme du tableau et sa dimension.

Par souci de simplicité, considérez la situation suivante.

init.py


import numpy as np
assert a.shape == (N,)  # ndarray
assert b.shape == (N, K)  # ndarray

a+b_ex.png

a+b_but.PNG

Si vous écrivez ceci avec une instruction for,

naive.py


c = np.zeros(N, K)
for k in range(K):
    c[:, k] = a + b[:, k]

Cependant, je ne veux pas écrire autant que possible une instruction for. Vous pouvez aussi simplement faire «a + b», mais cela ne pourra pas du tout gérer des problèmes compliqués.

2. Pensez à vos objectifs.

Le but cette fois est de faire «a + b» pour chaque échantillon «K» de «b» et d'obtenir le résultat pour chaque échantillon. Définissons fermement la forme du résultat final = (disposition des objectifs).

goal.py


c = np.zeros(N, K)
hogehoge()
assert c.shape == (N, K)

Ce sera comme ça.

3. Insérez np.newaxis

Normalement, quand je mets ʻa + b` dans ma tête, ça ressemble à ceci,

a+b.PNG

Je ne sais pas comment calculer car «b» est un tableau à deux dimensions avec plusieurs échantillons.

a+b_but.PNG

Laissez-moi vous donner des instructions sur la façon de calculer cela. C'est «np.newaxis». En fait, la substance de «np.newaxis» est «Aucun», mais utilisons «np.newaxis» sans trop nous inquiéter. Lorsqu'une opération (ici +) qui nécessite que le tableau ait la même forme arrive, nous vous demanderons de "lui donner la même forme" à partir d'ici. Premièrement, puisque la dimension du tableau est ʻa.shape == (N,) , au moins ʻa.shape == (N, 1). Pour ce faire, utilisez ʻa [:, np.newaxis] . Cette opération permet à Numpy de déterminer automatiquement à partir de l'autre argument de l'opérateur, qui s'étend de (N, 1)à(N, K)` et effectue le calcul.

a+b=c.PNG

add_samples.py


import numpy as np
assert a.shape == (N,)  # ndarray
assert b.shape == (N, K)  # ndarray

# a[:, (Pas assez ici)] 
c = a[:, np.newaxis] + b[:, :]
assert c.shape == (N, K)  #Ayons le rôle de vérification des erreurs et de mémo en même temps

Résumé

De cette façon, une compréhension calme de ce que fait Numpy facilite automatiquement la résolution de problèmes complexes.

Recommended Posts

Conseils pour réfléchir à np.newaxis en Python / Numpy
Astuces Python et Numpy
astuces python
astuces numpy
Astuces Python
Astuces Python
Mon Numpy (Python)
Conseils de débogage Python
Astuces de clic Python
De manière inattendue (?) Connaissance du bean Python
Les bases de #Python (#Numpy 1/2)
Les bases de #Python (#Numpy 2/2)
Principes de base de Python #Numpy
[Python] Mémo Numpy
Test numpy Python Basic 8
[Python] Recherche (NumPy) ABC165C
calcul de tableau numpy python
Astuces Python (mon mémo)
Conseils d'installation de Python PyTorch
[Python] Tri des données Numpy
Python Basic --Pandas, Numpy-
[Astuces] Calcul des différences de premier ordre et conversion inverse [python / numpy]
Convertir numpy int64 en python int
[Python] Méthode de calcul avec numpy
Implémentation de SMO avec Python + NumPy
Recevoir des conseils d'entrée standard @ python
Produit matriciel en python numpy
[Astuces] Gérez Athena avec Python
Créer un tableau numpy python
[Python + Selenium] Conseils pour le grattage
Conseils relatifs aux API Google Drive (Python)
~ Conseils pour les débutants de Python présentés avec amour par Pythonista ③ ~
[Python] Référence Numpy, extraction, combinaison
Je pense étudier Python
Accès en indice au tableau numpy python
Introduction à la bibliothèque de calcul numérique Python NumPy
Conseils sur l'entrée / la sortie de fichier Python
[Introduction à Python] <numpy ndarray> [modifier le 22/02/2020]
Mettez python, numpy, opencv3 dans ubuntu14
Carte auto-organisée dans la version Python NumPy
[TouchDesigner] Conseils pour la déclaration par python
Conseils pour appeler Python à partir de C
Application Python: Numpy Partie 3: Double tableau
Écrire une liste de python astuces vim rapides
[docker] Construction de l'environnement python3.5 + numpy + matplotlib