Réfléchissons au point de départ. Quelle est la raison d'utiliser Python pour les statistiques et l'apprentissage automatique? L'auteur pense comme suit.
Il existe de nombreux autres types, tels que Haskell et Ruby, qui sont purement attrayants pour le langage. En outre, le langage R est bien connu pour les calculs mathématiques statistiques simples. Il existe également des logiciels payants pour les calculs financiers et l'analyse statistique. Cependant, Python peut être le premier candidat en tant que langage qui résout des problèmes en même temps qu'une application scientifique spécialisée dans le calcul et le traitement général du système.
NumPy est la bibliothèque qui est à la base de calculs scientifiques et mathématiques divers tels que le calcul de tableaux multidimensionnels par Python.
À partir de maintenant, nous allons nous concentrer sur la manipulation des tableaux de NumPy pendant un certain temps pour mieux comprendre ses puissantes fonctionnalités.
L'objet NumPy ndarray est une classe permettant de traiter les données de foulée (données continues) comme un tableau à N dimensions.
Tenter de travailler avec des tableaux multidimensionnels dans un langage de programmation commun sans l'aide d'une telle bibliothèque nécessiterait une liste imbriquée complexe (tableau) et une autre boucle multiple imbriquée complexe pour le calculer. Je vais finir. Ce n'est pas réaliste, donc le bien ou le mal d'une bibliothèque de tableaux multidimensionnels peut être considéré comme essentiel dans les calculs scientifiques.
Voici quelques-uns des avantages de ndarray par rapport à ndarray et à plusieurs listes (tableaux).
D'un autre côté, ndarray présente certains inconvénients.
Du point de vue de l'algèbre mathématique, en particulier linéaire, je pense que c'est plutôt naturel.
Le ndarray a une foulée en interne et l'objet tableau a des éléments tels que dtype (type de données), la forme et la foulée.
La forme du tableau est accessible avec la fonction shape. Les foulées sont également accessibles avec la fonction foulées.
np.zeros((3,4))
#=> array([[ 0., 0., 0., 0.],
# [ 0., 0., 0., 0.],
# [ 0., 0., 0., 0.]])
np.zeros((3,4)).shape
#=> (3, 4)
np.zeros((3,4)).strides
#=> (32, 8)
#Valeur d'octet indiquant la "longueur de pas" requise pour faire avancer un élément d'un élément dans chaque dimension
Pour les tableaux avec deux dimensions ou plus, la destination de référence d'index est un tableau avec une ou plusieurs dimensions.
arr = np.array( [[[1,2,3], [4,5,6]], [[7,8,9],[10,11,12]]] )
arr.ndim #Nombre de dimensions
#=> 3
arr[0]
#=> array([[1, 2, 3],
# [4, 5, 6]])
#Renvoie un tableau à deux dimensions
Si vous spécifiez un tableau pour l'index, vous pouvez récupérer le tableau avec le nombre de dimensions réduit de ce montant.
arr[1,0]
#=> array([7, 8, 9])
arr[1,0,2]
#=> 9
Lorsque vous souhaitez extraire d'un tableau multidimensionnel dans un certain ordre, vous pouvez transmettre une liste d'entiers ou ndarray indiquant l'ordre comme référence d'index.
arr[[1,0]]
#=> array([[[ 7, 8, 9],
# [10, 11, 12]],
# [[ 1, 2, 3],
# [ 4, 5, 6]]])
arr = np.arange(48).reshape((4,3,4))
#=> array([[[ 0, 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, 26, 27],
# [28, 29, 30, 31],
# [32, 33, 34, 35]],
# [[36, 37, 38, 39],
# [40, 41, 42, 43],
# [44, 45, 46, 47]]])
arr[[0,0,1],[0,1,0],[0,0,2]]
#=> array([ 0, 4, 14])
# (0,0,0), (0,1,0), (1,0,2)L'élément à la position de est retiré
Tout d'abord, j'ai présenté la référence d'index de base. Ces références ne copient pas l'objet en mémoire et sont toutes fournies dans une vue stride sur les données. C'est l'une des fonctionnalités de ndarray.
Recommended Posts