[100 jours de maîtrise de Python] Jour 52 : Analyse des données Python_Bases de Numpy et opérations sur les tableaux

Table des matières

1 Aperçu de base de NumPy

1.1 Principales caractéristiques et fonctions de NumPy

1.2 Installation et importation de NumPy

2 tableaux Numpy

2.1 Création de tableaux NumPy

2.2 Forme et dimensions des tableaux

2.3 Types de données des tableaux

2.4 Accéder et modifier les éléments du tableau

3 Opérations sur les tableaux

3.1 Fonctionnement du réseau

3.2 Fonctions mathématiques

3.3 Fonctions statistiques

4 Opérations sur la forme du tableau

4.1 Remodeler un tableau

4.2 Transposition d'un tableau

4.3 Aplatissement du tableau

4.4 Changer la taille d'un tableau

4.5 Tableaux empilés

4.6 Fractionner un tableau


1 Aperçu de base de NumPy

        NumPy (Numerical Python) est l'une des bibliothèques de base pour le calcul numérique en Python. Il fournit des objets tableaux multidimensionnels (appelés ndarray) et des fonctions permettant d'effectuer diverses opérations mathématiques, logiques, statistiques et algébriques linéaires sur ces tableaux. NumPy est un outil important dans les domaines de la science des données, de l'apprentissage automatique, du calcul scientifique et de l'ingénierie. Son objectif de conception est de fournir des outils de calcul numérique hautes performances, flexibles et faciles à utiliser.

1.1 Principales caractéristiques et fonctions de NumPy

  1. Objet tableau multidimensionnel (ndarray) : La structure de données de base de NumPy ndarray, il s'agit d'un tableau multidimensionnel similaire à une liste, mais avec les caractéristiques suivantes :

    • Tous les éléments doivent être du même type de données.
    • La forme du réseau peut être arbitraire et peut être unidimensionnelle, bidimensionnelle, tridimensionnelle, etc.
    • Les éléments d'un tableau sont accessibles par indexation et découpage.
  2. Calcul haute performance : les opérations sur les tableaux de NumPy sont implémentées en utilisant un langage C hautement optimisé en bas, afin qu'il puisse effectuer des calculs numériques de manière très efficace. Cela fait de NumPy l'outil de choix pour traiter des ensembles de données à grande échelle.

  3. Fonctions mathématiques étendues : NumPy fournit une multitude de fonctions mathématiques, notamment des opérations arithmétiques de base, des fonctions trigonométriques, des fonctions exponentielles et logarithmiques, des fonctions statistiques, des fonctions d'algèbre linéaire, etc.

  4. Génération de nombres aléatoires : NumPy comprend un générateur de nombres aléatoires pour générer des nombres aléatoires et des tableaux aléatoires. Ceci est utile pour les simulations et les expériences aléatoires.

  5. Fonctions de diffusion : NumPy permet d'opérer entre des tableaux de formes différentes grâce à des fonctions de diffusion afin que ces opérations puissent être automatiquement adaptées à des tableaux de formes différentes sans écrire explicitement de boucles.

  6. Entrée et sortie de fichiers : NumPy prend en charge la lecture et l'écriture de plusieurs formats de fichiers, notamment les fichiers texte, les fichiers binaires et le format binaire personnalisé de NumPy.

  7. Opérations d'algèbre linéaire : NumPy fournit un riche ensemble de fonctions d'algèbre linéaire, telles que la multiplication matricielle, la matrice inverse, la décomposition des valeurs propres, la décomposition des valeurs singulières, etc.

  8. Analyse des données et calcul scientifique : NumPy est souvent utilisé avec d'autres bibliothèques telles que Pandas, SciPy et Matplotlib pour l'analyse de données, le calcul scientifique, la visualisation de données et d'autres tâches.

  9. Support open source et communautaire : NumPy est un projet open source avec une large communauté d'utilisateurs et de développeurs, donc la documentation, les tutoriels et le support sont facilement disponibles pour vous.

        En bref, NumPy est une bibliothèque indispensable en Python, qui fournit des outils puissants pour le calcul numérique, rendant le calcul scientifique et l'analyse de données en Python plus pratiques et efficaces. Si vous travaillez dans la science des données, l’ingénierie ou la recherche scientifique, apprendre et maîtriser NumPy est une étape très importante. Vous pouvez commencer à utiliser NumPy en l'installant et en consultant sa documentation officielle.

 Numpy 官方手册:Guide de l'utilisateur NumPy — Manuel NumPy v1.25 icon-default.png?t=N7T8https://numpy.org/doc/stable/user/index.html#user

1.2 Installation et importation de NumPy

Avant d'utiliser NumPy, il doit d'abord être installé. Vous pouvez installer NumPy via pip avec la commande suivante :

(1) Installer avec conda :

# Best practice, use an environment rather than install in the base env
conda create -n my-env
conda activate my-env
# If you want to install from conda-forge
conda config --env --add channels conda-forge
# The actual install command
conda install numpy

(2) Installer avec pip :

pip install numpy

Une fois installé, vous pouvez importer NumPy en Python :

import numpy as np

        Souvent, les gens importent NumPy en tant que np, pour simplifier le référencement dans le code. Vous êtes maintenant prêt à commencer à effectuer des calculs numériques avec NumPy.

2 tableaux Numpy

2.1 Création de tableaux NumPy

np.array()Les tableaux NumPy peuvent être créés à partir de listes ou de tuples Python à l'aide des fonctions :

# 创建一个一维数组
arr1 = np.array([1, 2, 3, 4, 5])

# 创建一个二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

2.2 Forme et dimensions des tableaux

Les tableaux NumPy ont une forme et une dimension, qui peuvent être obtenues à l'aide des attributs suivants :

shape = arr.shape  # 形状,返回 (5,) 表示一维数组
dim = arr.ndim    # 维度,返回 1 表示一维数组

2.3 Types de données des tableaux

Chaque tableau NumPy a un type de données, qui peut être dtypevisualisé à l'aide d'attributs :

dtype = arr.dtype  # 返回数组的数据类型,如int64

2.4 Accéder et modifier les éléments du tableau

Vous pouvez accéder et modifier les éléments d'un tableau à l'aide de l'indexation et du découpage

element = arr[2]       # 获取索引为2的元素,值为3
sub_array = arr[1:4]   # 获取索引1到3的元素,结果为[2, 3, 4]
arr[0] = 10            # 修改索引0的元素为10

3 Opérations sur les tableaux

3.1 Fonctionnement du réseau

        NumPy prend en charge l'exécution de diverses opérations mathématiques sur les tableaux, telles que l'addition, la soustraction, la multiplication et la division. Ces opérations sont effectuées élément par élément :

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

# 加法
result_addition = arr1 + arr2  # [5, 7, 9]

# 减法
result_subtraction = arr1 - arr2  # [-3, -3, -3]

# 乘法
result_multiplication = arr1 * arr2  # [4, 10, 18]

# 除法
result_division = arr1 / arr2  # [0.25, 0.4, 0.5]

3.2 Fonctions mathématiques

NumPy fournit un riche ensemble de fonctions mathématiques qui vous permettent d'opérer sur des tableaux entiers ou sur des éléments de tableaux. Voici quelques exemples:

import numpy as np

# 数组用于演示数学函数的功能
arr = np.array([0, 1, 2, 3, 4, 5])

# 计算指数函数
exp_values = np.exp(arr)
# exp_values 现在包含了arr中每个元素的e的幂次方结果

# 计算自然对数函数(对数的逆函数)
log_values = np.log(arr + 1)
# 这里使用(arr + 1)来避免对0进行对数运算,因为对数函数不定义于0

# 计算平方根
sqrt_values = np.sqrt(arr)
# sqrt_values 现在包含了arr中每个元素的平方根

# 计算正弦函数
sin_values = np.sin(arr)
# sin_values 包含arr中每个元素的正弦值

# 计算余弦函数
cos_values = np.cos(arr)
# cos_values 包含arr中每个元素的余弦值

# 计算反正弦函数
asin_values = np.arcsin(arr / 5)
# asin_values 包含arr中每个元素的反正弦值

# 计算反余弦函数
acos_values = np.arccos(arr / 5)
# acos_values 包含arr中每个元素的反余弦值

# 计算四舍五入的整数值
round_values = np.round(arr / 2)
# round_values 包含arr中每个元素除以2并四舍五入后的整数值

Exemple concret :

import numpy as np

# 求绝对值
absolute_value = np.abs([-1, -2, 3])  # [1 2 3]

# 计算平方根
sqrt_value = np.sqrt([4, 9, 16])  # [2. 3. 4.]

# 计算指数函数
exp_value = np.exp([1, 2, 3])  # [ 2.71828183  7.3890561  20.08553692]

# 计算自然对数
log_value = np.log([1, 10, 100])  # [0. 2.30258509 4.60517019]

# 计算以2为底的对数
log2_value = np.log2([1, 2, 4])  # [0. 1. 2.]

# 计算以10为底的对数
log10_value = np.log10([1, 10, 100])  # [0. 1. 2.]

# 计算幂函数
power_value = np.power([2, 3, 4], [2, 3, 2])  # [ 4 27 16]

# 计算三角函数
sin_value = np.sin(np.pi / 2)  # 1.0
cos_value = np.cos(np.pi)  # -1.0

# 计算反三角函数
arcsin_value = np.arcsin(1)  # 1.5707963267948966
arccos_value = np.arccos(0)  # 1.5707963267948966

# 计算正切函数
tan_value = np.tan(np.pi / 4)  # 0.9999999999999999

# 计算反正切函数
arctan_value = np.arctan(1)  # 0.7853981633974483

# 计算双曲正弦函数
sinh_value = np.sinh(1)  # 1.1752011936438014

# 计算双曲余弦函数
cosh_value = np.cosh(1)  # 1.5430806348152437

# 计算双曲正切函数
tanh_value = np.tanh(1)  # 0.7615941559557649

# 计算双曲反正弦函数
arcsinh_value = np.arcsinh(1)  # 0.881373587019543

# 计算双曲反余弦函数
arccosh_value = np.arccosh(2)  # 1.3169578969248166

# 计算双曲反正切函数
arctanh_value = np.arctanh(0.5)  # 0.5493061443340548

# 计算四舍五入
round_value = np.round([1.2, 2.7, 3.5])  # [1. 3. 4.]

# 计算向上取整
ceil_value = np.ceil([1.2, 2.7, 3.5])  # [2. 3. 4.]

# 计算向下取整
floor_value = np.floor([1.2, 2.7, 3.5])  # [1. 2. 3.]

        Les exemples ci-dessus sont des exemples d'une série de fonctions mathématiques dans NumPy, notamment la valeur absolue, la racine carrée, la fonction exponentielle, le logarithme népérien, le logarithme en base 2, le logarithme en base 10, la fonction puissance, la fonction trigonométrique, la fonction trigonométrique inverse, les fonctions hyperboliques, l'inverse. fonctions hyperboliques, arrondi, arrondi vers le haut et vers le bas. Ces fonctions vous permettent d'effectuer diverses opérations et transformations mathématiques pour traiter et analyser des données.

3.3 Fonctions statistiques

        NumPy fournit diverses fonctions statistiques qui peuvent vous aider à analyser les propriétés statistiques des tableaux, telles que la moyenne, la somme, les valeurs maximales et minimales, etc. Voici un exemple:

import numpy as np

# 创建一个示例数组
data = np.array([1, 2, 2, 3, 3, 3, 4, 4, 4, 4])

# 计算平均值
mean = np.mean(data)  # 平均值为 3.0

# 计算中位数
median = np.median(data)  # 中位数为 3.0

# 计算众数
from scipy import stats
mode = stats.mode(data)  # 众数为 ModeResult(mode=array([4]), count=array([4]))

# 计算标准差
std_deviation = np.std(data)  # 标准差为 1.118033988749895

# 计算方差
variance = np.var(data)  # 方差为 1.25

# 计算最小值和最大值
min_value = np.min(data)  # 最小值为 1
max_value = np.max(data)  # 最大值为 4

# 计算百分位数
percentile_25 = np.percentile(data, 25)  # 25th 百分位数为 2.25
percentile_75 = np.percentile(data, 75)  # 75th 百分位数为 3.75

# 计算数据范围
data_range = np.ptp(data)  # 数据范围为 3

# 计算数据的四分位距
iqr = np.percentile(data, 75) - np.percentile(data, 25)  # 四分位距为 1.5

# 计算数据的和
total_sum = np.sum(data)  # 总和为 30

# 计算累积和
cumulative_sum = np.cumsum(data)  # [ 1  3  5  8 11 14 18 22 26 30]

# 计算累积积
cumulative_product = np.cumprod(data)  # [     1      2      4     12     36    108    432   1728   6912  27648]

# 计算均方根(Root Mean Square)
rms = np.sqrt(np.mean(np.square(data)))  # 均方根为 2.160246899469287

# 计算协方差矩阵
data1 = np.array([1, 2, 3, 4, 5])
data2 = np.array([5, 4, 3, 2, 1])
covariance_matrix = np.cov(data1, data2)  # 结果是一个协方差矩阵

# 计算相关系数
correlation_coefficient = np.corrcoef(data1, data2)  # 结果是相关系数矩阵

Des exemples montrent comment utiliser les fonctions statistiques dans NumPy pour calculer diverses statistiques, notamment la moyenne, la médiane, le mode, l'écart type, la variance, le minimum, le maximum, le centile, la plage de données, la distance quartile, la somme, la somme cumulée, le produit cumulé, la racine carrée moyenne, matrice de covariance et coefficient de corrélation. Ces fonctions sont très utiles pour l'analyse des données.

4 Opérations sur la forme du tableau

4.1 Remodeler un tableau

        Remodeler des tableaux est une opération courante, en particulier lorsque vous travaillez avec des données de formes différentes. Les tableaux peuvent être remodelés à l'aide reshape()de fonctions, mais notez que la nouvelle forme doit avoir le même nombre d'éléments que le tableau d'origine.

4.2 Transposition d'un tableau

        L'opération de transposition d'un tableau permute les lignes et les colonnes du tableau. Vous pouvez utiliser .Tdes propriétés pour obtenir la transposition d'un tableau.

4.3 Aplatissement du tableau

        Aplatir un tableau signifie convertir un tableau multidimensionnel en un tableau unidimensionnel. Vous pouvez utiliser ravel()des fonctions ou flatten()des fonctions pour y parvenir.

4.4 Changer la taille d'un tableau

        À l’aide resize()d’une fonction, la taille d’un tableau peut être modifiée sans se soucier de savoir si la nouvelle forme est compatible avec le nombre d’éléments du tableau d’origine. Si le nouveau tableau est plus grand que le tableau d'origine, les éléments en excès seront remplis de zéros.

4.5 Tableaux empilés

        Empiler des tableaux consiste à empiler plusieurs tableaux ensemble verticalement ou horizontalement. Vous pouvez utiliser vstack()la fonction pour empiler verticalement et hstack()la fonction pour empiler des tableaux horizontalement.

4.6 Fractionner un tableau

        Diviser un tableau consiste à diviser un tableau en plusieurs sous-tableaux. Utilisez split()des fonctions pour diviser les tableaux selon des positions spécifiées.

L'exemple de code ci-dessus :

import numpy as np

# 创建一个示例数组
arr = np.array([[1, 2, 3],
                [4, 5, 6]])

# 1. 重塑数组形状 (reshape)
# 用于改变数组的形状,返回一个新的视图。
reshaped = arr.reshape(3, 2)
# 结果为:
# [[1 2]
#  [3 4]
#  [5 6]]

# 2. 数组的转置 (T属性)
# 返回原始数组的转置,即交换行和列。
transposed = arr.T
# 结果为:
# [[1 4]
#  [2 5]
#  [3 6]]

# 3. 改变数组的大小 (resize)
# 允许调整数组的大小,可以增加或减少元素的数量。
resized = np.resize(arr, (2, 4))
# 结果为:
# [[1 2 3 4]
#  [5 6 1 2]]

# 4. 数组连接 (vstack, hstack)
# vstack用于垂直堆叠多个数组,hstack用于水平堆叠多个数组。
arr1 = np.array([1, 2])
arr2 = np.array([3, 4])
vertical_stack = np.vstack((arr1, arr2))
# 结果为:
# [[1 2]
#  [3 4]]

horizontal_stack = np.hstack((arr1, arr2))
# 结果为:
# [1 2 3 4]

# 5. 拆分数组 (split)
# 用于将一个数组拆分为多个子数组,可以指定拆分的位置。
split_arr = np.split(arr, 2)
# 在索引2处拆分数组,结果为两个子数组:
# 子数组1: [[1 2 3]]
# 子数组2: [[4 5 6]]

# 6. 数组展平 (ravel, flatten)
# ravel和flatten函数用于将多维数组展平为一维数组。
flattened = arr.ravel()
# 结果为一维数组: [1 2 3 4 5 6]

# 可以使用flatten()函数进行展平,效果相同:
flattened_using_flatten = arr.flatten()

# 7. 更改数组的维度 (ndarray.shape)
# 使用数组的shape属性来直接更改数组的形状。
arr.shape = (3, 2)
# 这会将数组的形状更改为3x2。

# 8. 调整数组的大小 (resize)
# resize函数也可用于调整数组的大小,但可以指定refcheck参数以避免数据损失。
resized = np.resize(arr, (2, 4), refcheck=False)
# 结果为:
# [[1 2 3 4]
#  [5 6 1 2]]

        Ces opérations de forme de réseau sont largement utilisées dans le prétraitement des données, le traitement d’images, l’apprentissage automatique, le calcul scientifique et d’autres domaines. Ils le rendent plus flexible lorsqu'il s'agit de traiter des données de différentes formes et dimensions, et peuvent adapter les données à différents algorithmes et tâches.

おすすめ

転載: blog.csdn.net/qq_35831906/article/details/132646716