Maison  >  Article  >  développement back-end  >  Exemple simple de tableau numpy splicing_python

Exemple simple de tableau numpy splicing_python

韦小宝
韦小宝original
2017-12-16 13:06:112246parcourir

Cet article présente principalement un exemple simple d'épissage de tableaux numpy, y compris une introduction aux tableaux numpy, aux propriétés des tableaux numpy, etc. Il a une certaine valeur de référence et les amis dans le besoin peuvent s'y référer.

Un tableau NumPy est un objet tableau multidimensionnel appelé ndarray. Il se compose de deux parties :

·Les données réelles

·Métadonnées décrivant ces données

La plupart des opérations Uniquement pour les métadonnées , sans modifier les données réelles sous-jacentes.

Il y a quelques choses que vous devez savoir sur les tableaux NumPy :

·Les indices des tableaux NumPy commencent à 0.

·Les types de tous les éléments du même tableau NumPy doivent être les mêmes.

Propriétés du tableau NumPy

Avant de présenter les tableaux NumPy en détail. Tout d’abord, présentons en détail les propriétés de base des tableaux NumPy. La dimensionnalité d'un tableau NumPy est appelée rang. Un tableau unidimensionnel a un rang 1, un tableau bidimensionnel a un rang 2, et ainsi de suite. Dans NumPy, chaque tableau linéaire est appelé un axe (axes) et le rang décrit en fait le nombre d'axes. Par exemple, un tableau à deux dimensions équivaut à deux tableaux à une dimension, où chaque élément du premier tableau à une dimension est un autre tableau à une dimension. Ainsi, un tableau unidimensionnel correspond aux axes (axes) dans NumPy. Le premier axe est équivalent au tableau sous-jacent et le deuxième axe est le tableau du tableau sous-jacent. Le nombre d'axes, le rang, est la dimension du tableau.

Les attributs d'objet ndarray les plus importants dans les tableaux NumPy sont :

1.ndarray.ndim : la dimension du tableau (c'est-à-dire le nombre d'axes du tableau), qui est égale à la rang. Le plus courant est un tableau à deux dimensions (matrice).

2.ndarray.shape : Dimensions du tableau. est un tuple d'entiers représentant la taille du tableau dans chaque dimension. Par exemple, dans un tableau à deux dimensions, il représente le « nombre de lignes » et le « nombre de colonnes » du tableau. ndarray.shape renvoie un tuple dont la longueur correspond au nombre de dimensions, c'est-à-dire l'attribut ndim.

3.ndarray.size : Le nombre total d'éléments du tableau est égal au produit des éléments du tuple dans l'attribut shape.

4.ndarray.dtype : Un objet représentant le type d'éléments dans le tableau, qui peut être créé ou spécifié à l'aide de types Python standard. De plus, vous pouvez également utiliser les types de données fournis par NumPy introduits dans l'article précédent.

5.ndarray.itemsize : La taille en octets de chaque élément du tableau. Par exemple, la valeur de l'attribut itemsiz d'un tableau dont le type d'élément est float64 est 8 (float64 occupe 64 bits et chaque octet a une longueur de 8, donc 64/8 occupe 8 octets). Un autre exemple est un tableau dont le type d'élément est). complexe32. L'attribut de l'élément de tableau est 4 (32/8).

6.ndarray.data : Tampon contenant les éléments réels du tableau. Étant donné que les éléments sont généralement obtenus via l'index du tableau, il n'est généralement pas nécessaire d'utiliser cet attribut.

Première méthode d'épissage de tableau

Idée : convertissez d'abord le tableau en liste, puis utilisez les fonctions d'épissage de liste append() et extend () Attendez le traitement d'épissage et convertissez enfin la liste en tableau.

Exemple 1 :


>>> import numpy as np
>>> a=np.array([1,2,5])
>>> b=np.array([10,12,15])
>>> a_list=list(a)
>>> b_list=list(b)
>>> a_list.extend(b_list)
>>> a_list
[1, 2, 5, 10, 12, 15]
>>> a=np.array(a_list)
>>> a
array([ 1, 2, 5, 10, 12, 15])


Cette méthode ne convient que pour un simple épissage de tableaux unidimensionnels, car à la conversion Le processus prend du temps et n'est généralement pas recommandé pour fusionner de grandes quantités de données.

Méthode d'épissage de tableau deux

Idée : numpy fournit la fonction numpy.append(arr, values, axis=None). Pour les spécifications des paramètres, il doit y avoir soit un tableau et une valeur ; soit deux tableaux ou plus ne peuvent pas être directement ajoutés et assemblés. La fonction append renvoie toujours un tableau unidimensionnel.

Exemple 2 :


>>> a=np.arange(5)
>>> a
array([0, 1, 2, 3, 4])
>>> np.append(a,10)
array([ 0, 1, 2, 3, 4, 10])
>>> a
array([0, 1, 2, 3, 4])
 
>>> b=np.array([11,22,33])
>>> b
array([11, 22, 33])
>>> np.append(a,b)
array([ 0, 1, 2, 3, 4, 11, 22, 33])
 
>>> a
array([[1, 2, 3],
    [4, 5, 6]])
>>> b=np.array([[7,8,9],[10,11,12]])
>>> b
array([[ 7, 8, 9],
    [10, 11, 12]])
>>> np.append(a,b)
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])


Les tableaux Numpy n'ont pas pour fonction de changer dynamiquement la taille, numpy La fonction .append( ) réaffecte l'intégralité du tableau à chaque fois et copie le tableau d'origine dans le nouveau tableau.

Troisième méthode d'épissage de tableau

Idée : numpy fournit numpy.concatenate((a1,a2,...),axis=0 ) fonction. Capable de terminer l’épissage de plusieurs tableaux en même temps. Où a1, a2,... sont des paramètres de type tableau

Exemple 3 :


>>> a=np.array([1,2,3])
>>> b=np.array([11,22,33])
>>> c=np.array([44,55,66])
>>> np.concatenate((a,b,c),axis=0) # 默认情况下,axis=0可以不写
array([ 1, 2, 3, 11, 22, 33, 44, 55, 66]) #对于一维数组拼接,axis的值不影响最后的结果
 
>>> a=np.array([[1,2,3],[4,5,6]])
>>> b=np.array([[11,21,31],[7,8,9]])
>>> np.concatenate((a,b),axis=0)
array([[ 1, 2, 3],
    [ 4, 5, 6],
    [11, 21, 31],
    [ 7, 8, 9]])
>>> np.concatenate((a,b),axis=1) #axis=1表示对应行的数组进行拼接
array([[ 1, 2, 3, 11, 21, 31],
    [ 4, 5, 6, 7, 8, 9]])


Droite Comparez le temps d'exécution des deux fonctions numpy.append() et numpy.concatenate()

Exemple 4 :


>>> from time import clock as now
>>> a=np.arange(9999)
>>> b=np.arange(9999)
>>> time1=now()
>>> c=np.append(a,b)
>>> time2=now()
>>> print time2-time1
28.2316728446
>>> a=np.arange(9999)
>>> b=np.arange(9999)
>>> time1=now()
>>> c=np.concatenate((a,b),axis=0)
>>> time2=now()
>>> print time2-time1
20.3934997107


On peut voir que concatenate() est plus efficace et adapté à l'épissage de données à grande échelle

Résumé

Le ci-dessus se trouve l'article sur numpy. J'espère que tout le contenu de l'exemple simple d'épissage de tableau sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à ce site :

Recommandations associées :

Programmation Python pour numpy Exemple de méthode pour ajouter une colonne à une matrice

Méthode Python pour créer une matrice symétrique basée sur le module numpy

La bibliothèque numpy de Python

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