notes d'étude bibliothèque python numpy deux

notes d'étude bibliothèque python numpy deux

introduction

Continuer à apprendre la bibliothèque numpy.

Le contenu principal et les sections d'index NumPy

NumPy et indice de la tranche

objets de contenu Ndarray peuvent être consultés et modifiés par un index ou des tranches, comme la liste des opérations de découpage en tranches en Python.

ndarray réseau basé sur 0 - n indice de l'indice, la tranche de l'objet par tranche fonctions intégrées, et régler le démarrage, l'arrêt, et des paramètres de pas, une nouvelle coupe de matrice de la matrice d'origine.

Tranchage à travers la tranche () fonction

fonction slice () est une des fonctions intégrées, slice () fonction d'atteindre les tranches de l' objet, principalement utilisé dans l'opération de découpage en tranches dans le paramètre de la fonction.

import numpy as np
a = np.arange(10)
s = slice(2,7,2)

print(a)
[0 1 2 3 4 5 6 7 8 9]

print(a[s])
[2 4 6]

Par deux points :et en ...tranches

Les articles peuvent être séparés par une virgule des paramètres de départ: Arrêt: étape pour opération de tranchage:

import numpy as np
 
a = np.arange(10)  
b = a[2:7:2]   # 从索引 2 开始到索引 7 停止,间隔为 2
print(b)
# out [2  4  6]

Colon: explication: Si vous placez un seul paramètre, tel que [2] , retourne un seul élément correspondant à l'indice. Si [2:] , ce qui indique que tous les éléments seront récupérés plus tard , dès le début de l'indice. Si les deux paramètres, tels que : [72] entrée, puis d' extraire deux index (non compris l'indice d'arrêt) entre les deux.

a = np.arange(10)  # [0 1 2 3 4 5 6 7 8 9]

b = a[5]

print(b)
5

print(a[2:])
[2 3 4 5 6 7 8 9]

print(a[2:5])
[2 3 4]

De même des tableaux multidimensionnels la méthode d'extraction d'index:

Tranche peut en outre comprendre les points de suspension ..., pour faire la longueur de la même dimension du tableau de tuples sélectionnés. Si la position de la ligne de points de suspension, il renvoie des lignes de ndarray comprenant des éléments.

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

print(a[1:])
[[3 4 5]
 [4 5 6]]

print (a[...,1])   # 第2列元素
[2 4 5]

print (a[1,...])   # 第2行元素
[3 4 5]

print (a[...,1:])  # 第2列及剩下的所有元素
[[2 3]
 [4 5]
 [5 6]]

sections du côlon d'utilisation, les sections ont été incubées avec trame de données d'utilisation des langues R un peu similaire.

NumPy indexation avancée

En plus de ce qui précède indice entier et décrit tranche, la matrice peut être indexé par fantaisie booléenne et l'index de tableau d'index d'entier.

Entier index de tableau

réseau entier de l'index de tableau d'un existant, retourne un objet contenant les éléments ndarray effectué.

import numpy as np 
# 以下实例获取数组中(0,0),(1,1)和(2,0)位置处的元素。
x = np.array([[1,  2],  [3,  4],  [5,  6]]) 
y = x[[0,1,2],  [0,1,0]]  
print (y)
Out[164]:[1 4 5]
type(y)
Out[165]: numpy.ndarray
    
# 以下实例获取数组4*3数组的四个角的元素。    
x = np.array([[  0,  1,  2],[  3,  4,  5],[  6,  7,  8],[  9,  10,  11]])
rows = np.array([[0,0],[3,3]]) 
cols = np.array([[0,2],[0,2]]) 
y = x[rows,cols]
print (y)
[[ 0  2]
 [ 9 11]]

type(y)
Out[169]: numpy.ndarray
type(rows)
Out[170]: numpy.ndarray

#结合: 和...进行索引
a = np.array([[1,2,3], [4,5,6],[7,8,9]])
b = a[1:3, 1:3]
c = a[1:3,[1,2]]
d = a[...,1:]
print(b)
print(c)
print(d)

Index Boolean

index booléenne par opérateurs booléens: pour obtenir un réseau d'éléments qui répondent aux conditions spécifiées (par exemple des opérateurs de comparaison).

# 以下实例获取大于 5 的元素:
x = np.array([[  0,  1,  2],[  3,  4,  5],[  6,  7,  8],[  9,  10,  11]])  
print (x[x >  5])

# 以下实例使用了 ~(取补运算符)来过滤 NaN。
a = np.array([np.nan,  1,2,np.nan,3,4,5])  
print (a[~np.isnan(a)])

# 以下实例演示如何从数组中过滤掉非复数元素。
a = np.array([1,  2+6j,  5,  3.5+5j])  
print (a[np.iscomplex(a)])

indice de fantaisie

indice de fantaisie se réfère à l'indice entier d'utilisation dans le tableau.

La valeur de l'indice de fantaisie sur la base de la valeur de l'index de tableau comme un indice d'un axe de la matrice cible. si l'objectif est un tableau à deux dimensions, la cible correspondante est la ligne suivante, pour une matrice à une dimension des entiers comme indice, si l'objectif est un tableau à une dimension, alors le résultat est que l'élément d'indice correspondant à l'emplacement.

indices de fantaisie ne le font pas comme une tranche, il copie toujours les données du nouveau tableau.

x=np.arange(32).reshape((8,4))
print(x)
[[ 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]]

# 1. 传入顺序索引数组,即取相应的行
print (x[[4,2,1,7]])
[[16 17 18 19]
 [ 8  9 10 11]
 [ 4  5  6  7]
 [28 29 30 31]]

# 2. 传入倒序索引数组,即倒着数取相应的行
print (x[[-4,-2,-1,-7]])
[[16 17 18 19]
 [24 25 26 27]
 [28 29 30 31]
 [ 4  5  6  7]]

# 3. 传入多个索引数组(要使用np.ix_),即第一个数组是对应的行,第二个数组是对应的列
print (x[np.ix_([1,5,7,2],[0,3,1,2])])
[[ 4  7  5  6]
 [20 23 21 22]
 [28 31 29 30]
 [ 8 11  9 10]]

Je suppose que tu aimes

Origine www.cnblogs.com/songbiao/p/12449510.html
conseillé
Classement