Maison  >  Article  >  développement back-end  >  Comment choisir la bonne version de numpy pour optimiser votre flux de travail de science des données

Comment choisir la bonne version de numpy pour optimiser votre flux de travail de science des données

WBOY
WBOYoriginal
2024-01-19 09:23:151390parcourir

Comment choisir la bonne version de numpy pour optimiser votre flux de travail de science des données

Numpy est une bibliothèque d'opérations mathématiques couramment utilisée en Python. Elle fournit de puissantes opérations sur les tableaux et des fonctions de calcul numérique. Cependant, comme les versions de numpy sont constamment mises à jour, la manière dont les utilisateurs choisissent la version appropriée est devenue un problème important. Choisir la bonne version de numpy peut optimiser votre flux de travail de science des données et améliorer la maintenabilité et la lisibilité de votre code. Cet article expliquera comment choisir la version numpy et fournira des exemples de code réels pour référence aux lecteurs.

1. Comprendre les caractéristiques des différentes versions de numpy

La bibliothèque numpy est mise à jour très rapidement, et la dernière version est la 1.21.2. Lors de l'utilisation de numpy, comprendre les changements et les caractéristiques entre les différentes versions peut nous aider à choisir la version numpy appropriée et à améliorer l'efficacité et la maintenabilité du code. Les principales versions de numpy incluent 1.11, 1.12, 1.13, 1.14, 1.15, 1.16, 1.17, 1.18, 1.19, 1.20 et 1.21. Les principaux changements entre les différentes versions sont :

Fonctionnalités de la version
1.11 - Introduction des fonctions np.random.choice et np.random.permutationnp.random.choicenp.random.permutation函数

  • 增加了np.histogramdd函数
  • 提升了性能和稳定性
    1.12 - 引入了对MATLAB格式文件的读写支持
  • 优化了对Structured Arrays的支持
  • 使得在某些情况下的性能得到显著提升
    1.13 - 引入了对改进版的UMFPACK的支持
  • 增加了np.isclose函数
  • 提升了对Polynomials的支持
    1.14 - 移除了一些过时的函数和属性
  • 引入了支持多线程计算的np.matmul函数
  • 对文档进行了优化
    1.15 - 引入了针对Pandas的兼容性增强功能
  • 改进了np.loadtxtnp.genfromtxt函数
  • 改进了多维数组的分段和切片操作
    1.16 - 引入了布尔类型的掩码数组
  • 增加了np.piecewise函数
  • 改进了性能和稳定性
    1.17 - 引入了np.stack函数
  • 添加了针对Structured arrays的新特性
  • 对文档和性能进行了优化
    1.18 - 引入了np.moveaxis函数
  • 添加了np.copyto函数
  • 改进了np.count_nonzeronp.bincount函数
    1.19 - 引入了np.compress函数
  • 添加了np.isin函数
  • 改进了np.promote_types函数
    1.20 - 引入了np.histogram_bin_edges函数
  • 添加了np.searchsorted函数
  • 改进了np.unique函数的性能
    1.21 - 引入了np.linalg.lstsq函数的rcond参数
  • 引入了np.cell函数
  • 引入了np.format_float_positional函数

从上表可以看出,numpy的每个版本都有不同的变化和优化。在选择numpy版本时,需要结合具体需求和使用场景,选择相应版本。如果需要使用某个新特性或者解决某个特定问题,可以选择较新的版本。如果考虑稳定性和向下兼容性,可以选择较旧的版本。

2.如何更换numpy版本

在Python中,可以使用pip命令安装和更换numpy版本。以下是更换numpy版本的步骤:

  • 首先,可以通过pip list命令查看当前已安装的numpy版本。例如,使用以下命令检查numpy版本:
!pip list | grep numpy

输出:

numpy                1.19.5

该结果显示当前安装的numpy版本为1.19.5。

  • 为了更换numpy版本,需要先卸载当前版本,然后再安装新的版本。可以使用以下代码安装和卸载numpy:
# 卸载numpy
!pip uninstall -y numpy 

# 安装新的numpy版本
!pip install numpy==1.20

在代码中numpy==1.20表示安装1.20版本,读者可以根据需要选择合适版本号进行安装。

3.使用numpy的优化技巧

除了选择合适的numpy版本之外,针对具体的数据科学问题,还可以采用一些numpy的优化技巧,提高代码的效率和可读性。以下是几个实用的numpy优化技巧的示例:

(1) 使用numpy的向量化计算

numpy使得向量化计算变得非常容易。处理大量数据时,使用向量化计算比逐个元素地循环计算更快。以下是一个例子,实现对两个数组的逐个元素求和:

import numpy as np

# 生成两个向量
a = np.array([1,2,3,4])
b = np.array([5,6,7,8])

# 使用循环计算元素和
c = np.zeros(len(a))
for i in range(len(a)):
    c[i] = a[i] + b[i]

# 使用向量化计算元素和
d = a + b

# 输出结果
print(c)   # [ 6.  8. 10. 12.]
print(d)   # [ 6  8 10 12]

从上例可以看出,使用向量化计算可以大大简化代码,同时提高效率。

(2) 使用numpy的广播功能

numpy的广播(broadcast)功能是一种非常强大的工具,它可以让不同形状的数组之间进行数学计算。广播的规则可以使得一些计算变得非常简单。下面是一个例子,实现两个形状不同的数组的相加:

import numpy as np

# 生成两个数组
a = np.array([[ 0.0,  0.0,  0.0],
              [10.0, 10.0, 10.0],
              [20.0, 20.0, 20.0],
              [30.0, 30.0, 30.0]])
b = np.array([1.0, 2.0, 3.0])

# 使用广播计算元素和
c = a + b

# 输出结果
print(c)

该代码片段将数字1、2和3视为一个列向量,将其与a

  • Ajout Fonction np.histogramdd
  • Performances et stabilité améliorées 1.12 - Introduction de la prise en charge de la lecture et de l'écriture des fichiers au format MATLAB
  • Optimisation de la prise en charge des tableaux structurés
  • Améliore considérablement les performances dans certains cas

    1.13 - Introduction de la prise en charge d'une version améliorée d'UMFPACK

  • Ajout de la fonction np.isclose
  • Amélioration de la prise en charge de Polynômes 1.14 - Suppression de certaines fonctions et propriétés obsolètes
  • Introduit np.matmulFonction
  • Optimisations de la documentation 🎜1.15 - Introduction d'améliorations de compatibilité pour Pandas
  • Fonction np.loadtxt et np.genfromtxt améliorée
  • Opérations de segmentation et de découpage améliorées des tableaux multidimensionnels 🎜 1.16 - Introduction du tableau de masques de type booléen
  • Ajout de la fonction np .piecewise
  • Performances et stabilité améliorées 🎜1.17 - Introduction de np.stack fonction
  • Ajout de nouvelles fonctions pour les fonctionnalités des tableaux structurés
  • Documentation et optimisations des performances 🎜1.18 - Introduction de la fonction np.moveaxis
  • Ajout Fonctions np.copyto
  • Fonctions np.count_nonzero et np.bincount améliorées 🎜1.19 - Introduction de np. fonction compress li>
  • Ajout de la fonction np.isin
  • Fonction np.promote_types améliorée 🎜1.20 - Introduit np.histogram_bin_edgesFonction
  • Ajout de la fonction np.searchsorted
  • Amélioration des performances de np.unique fonction 🎜1.21 - Introduit Ajout du paramètre rcond de la fonction np.linalg.lstsq
  • Introduit le np.cell fonction
  • Introduit la fonction np.format_float_positional
🎜Comme le montre le tableau ci-dessus, chaque version de numpy a des modifications et des optimisations différentes. Lors du choix d'une version numpy, vous devez sélectionner la version correspondante en fonction des besoins spécifiques et des scénarios d'utilisation. Si vous devez utiliser une nouvelle fonctionnalité ou résoudre un problème spécifique, vous pouvez choisir une version plus récente. Si vous tenez compte de la stabilité et de la compatibilité ascendante, vous pouvez choisir une ancienne version. 🎜🎜2. Comment changer la version de numpy🎜🎜En Python, vous pouvez utiliser la commande pip pour installer et modifier la version de numpy. Voici les étapes pour modifier la version de numpy : 🎜
  • Tout d'abord, vous pouvez afficher la version de numpy actuellement installée via la commande pip list. Par exemple, utilisez la commande suivante pour vérifier la version de numpy :
import numpy as np

# 生成一个数组
a = np.array([[ 0,  1,  2,  3],
              [10, 11, 12, 13],
              [20, 21, 22, 23],
              [30, 31, 32, 33],
              [40, 41, 42, 43]])

# 切片选择子数组
b = a[:, 1:3]

# 输出子数组
print(b)
🎜Sortie : 🎜
[[ 1  2]
 [11 12]
 [21 22]
 [31 32]
 [41 42]]
🎜Le résultat montre que la version de numpy actuellement installée est 1.19.5. 🎜
  • Pour changer la version de numpy, vous devez d'abord désinstaller la version actuelle, puis installer la nouvelle version. Vous pouvez utiliser le code suivant pour installer et désinstaller numpy :
import numpy as np

# 生成一个数组
a = np.array([[ 0,  1,  2,  3],
              [10, 11, 12, 13],
              [20, 21, 22, 23],
              [30, 31, 32, 33],
              [40, 41, 42, 43]])

# 使用索引选择特定元素
b = a[[0, 1, 2, 3], [1, 2, 3, 0]]

# 输出选中的元素
print(b)
🎜Dans le code, numpy==1.20 signifie installer la version 1.20. Les lecteurs peuvent choisir le numéro de version approprié pour. installer selon leurs besoins. 🎜🎜3. Utilisez des techniques d'optimisation numpy🎜🎜En plus de choisir la version numpy appropriée, vous pouvez également utiliser certaines techniques d'optimisation numpy pour améliorer l'efficacité et la lisibilité du code pour des problèmes spécifiques de science des données. Voici plusieurs exemples de techniques pratiques d'optimisation de numpy : 🎜🎜(1) L'utilisation des calculs vectoriels de numpy🎜🎜numpy rend les calculs vectoriels très faciles. Lorsque vous travaillez avec de grandes quantités de données, les calculs vectoriels sont plus rapides que la boucle sur les éléments un par un. Voici un exemple pour implémenter la sommation élément par élément de deux tableaux : 🎜
[ 1 12 23 30]
🎜 Comme le montre l'exemple ci-dessus, l'utilisation de calculs vectoriels peut grandement simplifier le code et améliorer l'efficacité en même temps. 🎜🎜(2) Utilisez la fonction de diffusion de numpy🎜🎜La fonction de diffusion de numpy est un outil très puissant qui permet d'effectuer des calculs mathématiques entre des tableaux de formes différentes. Les règles de radiodiffusion peuvent rendre certains calculs très simples. Voici un exemple d'ajout de deux tableaux de formes différentes : 🎜rrreee🎜Cet extrait de code traite les nombres 1, 2 et 3 comme un vecteur colonne, en l'ajoutant à chacun des tableaux a : Ajoutez une ligne à la fois. Le mécanisme de diffusion permet à numpy de déduire automatiquement sur quels axes effectuer les opérations de diffusion, ce qui rend les calculs très simples. 🎜🎜(3) Utilisez les fonctions de découpage et d'indexation de numpy🎜

numpy提供了切片和索引的功能,使得对数组中特定元素的访问变得非常方便。例如,如果想要选择数组中的一个子集,可以使用切片:

import numpy as np

# 生成一个数组
a = np.array([[ 0,  1,  2,  3],
              [10, 11, 12, 13],
              [20, 21, 22, 23],
              [30, 31, 32, 33],
              [40, 41, 42, 43]])

# 切片选择子数组
b = a[:, 1:3]

# 输出子数组
print(b)

该代码片段选择了数组a中第2列和第3列的所有行作为子数组,结果如下:

[[ 1  2]
 [11 12]
 [21 22]
 [31 32]
 [41 42]]

除了切片,numpy还提供了强大的索引功能,可以使用它来选择特定的元素或子数组:

import numpy as np

# 生成一个数组
a = np.array([[ 0,  1,  2,  3],
              [10, 11, 12, 13],
              [20, 21, 22, 23],
              [30, 31, 32, 33],
              [40, 41, 42, 43]])

# 使用索引选择特定元素
b = a[[0, 1, 2, 3], [1, 2, 3, 0]]

# 输出选中的元素
print(b)

该代码片段选择了数组a中的4个元素,分别是(0,1)、(1,2)、(2,3)和(3,0),结果如下:

[ 1 12 23 30]

4.结语

选择合适的numpy版本和使用优化技巧是提高数据科学工作效率的有效方法。通过与具体的场景结合,使用numpy的向量化计算、广播、切片和索引等优化技巧,能够简化代码、提高效率、降低资源消耗。读者可以基于本文提供的实际代码示例,进一步探索numpy的强大功能。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn