pitón NumPy dos notas de estudio de la biblioteca

pitón NumPy dos notas de estudio de la biblioteca

introducción

Seguir aprendiendo biblioteca numpy.

El contenido y secciones de índice principal NumPy

NumPy y el índice de la rebanada

objetos de contenido Ndarray pueden ser consultados y modificados por un índice o rodajas, como con la lista de operaciones de corte en Python.

array ndarray basado en 0 - n subíndice para el índice, el objeto de división por rebanada funciones integradas, y establecer los parámetros de inicio, parada, y de paso, una nueva matriz de corte de la matriz original.

Cortar a través de la rodaja de función ()

función rebanada () es una en incorporado funciones, slice () la función de lograr las rodajas de objetos, que se utiliza principalmente en la operación de rebanado en el parámetro de la función.

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]

Por el colon :y ...en rodajas

Las secciones pueden estar separados por dos puntos parámetros de inicio: parada: paso para la operación de corte:

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

Colon: explicación: Si se coloca un solo parámetro, tales como [2] , devuelve un único elemento que corresponde al índice. Si [2:] , indicando que todos los artículos serán recuperados más tarde desde el principio del índice. Si los dos parámetros, tales como : [72] de entrada, a continuación, la extracción de dos índices (no incluyendo el índice de parada) entre.

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]

Lo mismo se aplica matrices multidimensionales el método de extracción de índice:

Slice puede incluir además los puntos suspensivos ..., para hacer la longitud de la misma dimensión de la matriz de tuplas seleccionados. Si la posición de la línea de una elipsis, devuelve filas que comprende ndarray de elementos.

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]]

secciones de colon de uso, las secciones se incubaron con R algo similar trama de datos el uso del lenguaje.

NumPy indexación avanzada

Además de lo anterior índice entero descrito y la rebanada, la matriz puede ser indexado por la fantasía booleano y el índice de número entero índice de matriz.

Entero índice de matriz

matriz de enteros el índice de matriz de una, devuelve un objeto ndarray existente que contiene los elementos tomados.

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)

Índice de Boole

índice booleano por operadores booleanos: para obtener una matriz de elementos que cumplen las condiciones especificadas (por ejemplo, operadores de comparación).

# 以下实例获取大于 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)])

índice de fantasía

índice Fancy se refiere al índice de uso de número entero en la matriz.

valor de índice Fancy basado en el valor del índice de matriz como un subíndice de un eje de la matriz de destino. Para una matriz unidimensional de enteros como un índice, si el objetivo es matriz unidimensional, entonces el resultado es que el elemento índice correspondiente a la ubicación, si el objetivo es una matriz de dos dimensiones, el objetivo correspondiente es la siguiente línea.

índices de fantasía no lo hacen como una rebanada, siempre copia los datos a la nueva matriz.

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]]

Supongo que te gusta

Origin www.cnblogs.com/songbiao/p/12449510.html
Recomendado
Clasificación