Numpy - Exercices¶

Voici une série de tests pour vérifier ses connaissances en Numpy. Le but est que cette bibliothèque et la programmation vectorielle qu'elle implique deviennent naturelles. Il faut oublier la programmation classique avec des boucles (il ne faut pas utiliser de boucle for ou autre dans cette feuille en dehors de construction de liste en compréhension ).

Les fonctions ne doivent jamais modifier les arguements.

Les exercices indique le nombre de ligne de la réponse. Cela comprend l'en-tête de la fonction lorsqu'il y en a une.

Pensez à tester vos résultats.

In [1]:
import numpy as np
rand = np.random.RandomState(123)

A = np.arange(12).reshape(3,4)
B = rand.randint(-10, 10, size=(5,5))
print(A, '\n')
print(B)
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]] 

[[  3  -8  -8  -4   7]
 [  9   0  -9 -10   7]
 [  5  -1 -10   4 -10]
 [  5   9   4  -6 -10]
 [  6  -6   7  -7  -8]]

Matrice carrée¶

Créer la matrice carrée 5x5 qui contient les 25 premiers entiers, de 1 à 25.

1 ligne

In [2]:
 
Out[2]:
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10],
       [11, 12, 13, 14, 15],
       [16, 17, 18, 19, 20],
       [21, 22, 23, 24, 25]])

Norme d'un vecteur¶

Retourner la norme euclidienne d'un vecteur sans utiliser la fonction norm.

2 lignes

In [3]:
def norm(v):
    

Sous-matrice¶

Extraire la sous-matrice de taille (n-2)x(m-2) qui retire les bords de la matrice A de taille nxm.

2 lignes

In [4]:
def submat(A):

Vecteur aléatoire¶

Créer une fonction qui prend une taille n et retourne un vecteur d'entiers aléatoire de taille n compris entre -a et +a et centré le plus possible en 0.

3 lignes

In [5]:
def rand_vec(n, a):

Trace¶

Retourner la trace d'une matrice sans utiliser la fonction trace (à vous de chercher les éléments qui vous manque).

2 lignes

In [6]:
def trace(A):
 

Matrice de multiples de 3¶

Arrondir la matrice donnée au multiple de 3 le plus proche (pour chaque valeur).

2 lignes

In [7]:
def round3(A):

Nombre de 9¶

Compter le nombre de 9 dans une matrice d'entier A donnée en paramètre.

2 lignes

In [8]:
def nb9(A):

Colonne qui a la plus petite moyenne¶

Retourner l'indice de la colonne d'une matrice ayant la plus petite moyenne.

2 lignes

In [9]:
def min_col_mean(A):

ChessSum¶

On regarde la matrice comme un échequier avec des cases blanches et des cases noires qui alternent. La case en [0,0] est noire. Calculer la somme des valeurs sur les cases blanches.

2 lignes

In [10]:
def chess_sum(A):

2 minimums¶

Retourner les 2 plus petites valeurs d'une matrice avec une méthode de complexité linéaire. Attention, si la matrice a sa valeur minimal en double, la réponse est deux fois cette valeur minimale.

6 lignes

In [11]:
def mins(A):

Lignes dans l'ordre¶

Ranger les lignes d'une matrice dans l'ordre croissant de leur moyenne.

2 lignes

In [12]:
def sort_lines(A):

Valeurs uniques¶

Donner la liste des valeurs uniques (qui n'apparaissent qu'une fois) dans un tableau numpy (la fonction unique sera utile).

3 lignes

In [13]:
def val_unique(A):

Tenseur magique¶

Constuire un tenseur 3D de taille nxnxn en utilisant n fois les n² premiers entiers et de sorte que la sommme des éléments de chaque plan (coupe) est toujours la même.

3 lignes

In [14]:
def mk_magic_tensor(n):

Plans d'un tenseur¶

Extraire tous les plans d'un tenseur 3d. On retourne une liste de tableaux.

5 lignes (2 lignes avec la fonction take)

In [15]:
def extract_planes(T):
In [ ]: