Axes et dimensions en numpy

不言
Libérer: 2018-04-18 11:01:28
original
4308 Les gens l'ont consulté

L'article suivant partagera avec vous une compréhension de l'axe et des dimensions de numpy. Il a une bonne valeur de référence et j'espère qu'il sera utile à tout le monde. Jetons un coup d'oeil

L'objet principal de NumPy est le tableau multidimensionnel homogène. Il s'agit d'un tableau d'éléments (généralement des nombres), tous du même type, indexés par un tuple d'entiers positifs. Dans NumPy, les dimensions sont appelées axes. . Le nombre d'axes est le rang.

Par exemple, les coordonnées d'un point dans l'espace 3D [1, 2, 1] sont un tableau de rang 1, car il a un axe, cet axe a une longueur. de 3. Dans l'exemple illustré ci-dessous, le tableau a le rang 2 (il est à 2 dimensions). La première dimension (axe) a une longueur de 2, la deuxième dimension a une longueur de 3.

<.>

[[ 1., 0., 0.],
 [ 0., 1., 2.]]
Copier après la connexion

ndarray.ndim

Le nombre d'axes du tableau, dans

python In dans le monde de , le nombre d'axes est appelé rang

>> X = np.reshape(np.arange(24), (2, 3, 4))
  # 也即 2 行 3 列的 4 个平面(plane)
>> X
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]]])
Copier après la connexion

la fonction de forme est une fonction dans numpy.core.fromnumeric , sa fonction est de lire la longueur de la matrice, par exemple shape[0] est de lire la longueur de la première dimension de la matrice.

forme(x)

(2,3,4)

forme(x )[0]

2

ou

x.shape[0]

2

Regardons la composition de chaque plan séparément :

>> X[:, :, 0]
array([[ 0, 4, 8],
    [12, 16, 20]])
>> X[:, :, 1]
array([[ 1, 5, 9],
    [13, 17, 21]])
>> X[:, :, 2]
array([[ 2, 6, 10],
    [14, 18, 22]])
>> X[:, :, 3]
array([[ 3, 7, 11],
    [15, 19, 23]])
Copier après la connexion

C'est , Lors de la réorganisation de np.arange(24)(0, 1, 2, 3, ..., 23), dans les directions de plusieurs axes d'un tableau multidimensionnel, le dernier axe est alloué en premier (pour un tableau bidimensionnel array, C'est-à-dire que la direction de la ligne est attribuée en premier, et pour un tableau tridimensionnel, la direction du plan est attribuée en premier)

reshpae, est une méthode dans le objet tableau, utilisé pour changer la forme du tableau.

Tableau bidimensionnel

#!/usr/bin/env python 
# coding=utf-8 
import numpy as np 
 
a=np.array([1, 2, 3, 4, 5, 6, 7, 8]) 
print a 
d=a.reshape((2,4)) 
print d
Copier après la connexion

Tableau tridimensionnel

#!/usr/bin/env python 
# coding=utf-8 
import numpy as np 
 
a=np.array([1, 2, 3, 4, 5, 6, 7, 8]) 
print a 
f=a.reshape((2, 2, 2)) 
print f
Copier après la connexion

Le principe du changement de forme est que le les éléments du tableau ne peuvent pas être modifiés. Par exemple, il est faux d'écrire ainsi car les éléments du tableau ont changé.

#!/usr/bin/env python 
# coding=utf-8 
import numpy as np 
 
a=np.array([1, 2, 3, 4, 5, 6, 7, 8]) 
print a 
print a.dtype 
e=a.reshape((2,2)) 
print e
Copier après la connexion

Remarque : le nouveau tableau généré par reshape et le tableau d'origine partagent la même mémoire, c'est-à-dire if Changer les éléments d'un tableau modifiera également l'autre tableau.

#!/usr/bin/env python 
# coding=utf-8 
import numpy as np 
 
a=np.array([1, 2, 3, 4, 5, 6, 7, 8]) 
print a 
e=a.reshape((2, 4)) 
print e 
a[1]=100 
print a 
print e
Copier après la connexion

La signification du paramètre de fonction de remodelage -1 en Python

a=np.arange(0, 60, 10)
>>>a
array([0,10,20,30,40,50])
>>>a.reshape(-1,1)
array([[0],
[10],
[20],
[30],
[40],
[50]])
Copier après la connexion

S'il est écrit sous la forme a.reshape(1,1), une erreur sera signalée

ValueError : impossible de remodeler le tableau de taille 6 en forme (1,1)

>>> a = np.array([[1,2,3], [4,5,6]])
>>> np.reshape(a, (3,-1)) # the unspecified value is inferred to be 2
array([[1, 2],
    [3, 4],
    [5, 6]])
Copier après la connexion

-1 signifie que je je suis trop paresseux pour calculer le nombre à remplir, déduit par python via a et d'autres valeurs 3.

# 下面是两张2*3大小的照片(不知道有几张照片用-1代替),如何把所有二维照片给摊平成一维
>>> image = np.array([[[1,2,3], [4,5,6]], [[1,1,1], [1,1,1]]])
>>> image.shape
(2, 2, 3)
>>> image.reshape((-1, 6))
array([[1, 2, 3, 4, 5, 6],
    [1, 1, 1, 1, 1, 1]])
Copier après la connexion

Recommandations associées :


La différence entre un tableau et un tableau dans 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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!