Propiedades de la matriz
La diferencia entre ndim y forma
El número de ejes ndim, es decir, el número de capas de afuera hacia adentro (eje = 0 es la capa más externa)
forma Los elementos de cada conjunto de capas devuelven una tupla cuya longitud es ndim, como (2,2,3) significa eje = 0, hay dos elementos; eje = 1, hay dos elementos, el eje más interno = 3 tiene 3 elementos, ndim = 3
Crear matriz
1. Creación general
numpy.array (objeto, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
numpy.empty (forma, dtype = flotador, orden = 'C') para crear un vacío de matriz
numpy.zeros (forma, dtype = flotador, orden = 'C') para crear un cero de matriz
numpy.ones (forma, dtype = Ninguno, order = 'C') Crear 1 matriz
2. Crear una matriz a partir de una matriz existente
numpy.asarray (a, dtype = None, order = None) a es un parámetro de entrada de cualquier forma, que puede ser una lista, una tupla de una lista, una tupla, etc.
numpy.frombuffer (buffer, dtype = float, count = -1, offset = 0) El búfer se pasa en el parámetro
numpy.fromiter (iterable, dtype, count = -1) en forma de una secuencia creada a partir de un objeto iterable
3. Crear una matriz a partir de un rango de valores
numpy.arange (start, stop, step, dtype) crea una matriz dentro del rango de start-stop
np.linspace (start, stop, num = 50, endpoint = True, retstep = False, dtype = None) crea una matriz de equivalencia unidimensional, num es el número de elementos generados
np.logspace (inicio, detención, num = 50, punto final = Verdadero, base = 10.0, dtype = Ninguno) para crear una secuencia proporcional, base log base
corte e indexación numpy
1. rebanada () rebanadas por índice
import numpy as np
a = np.arange(10)
s = slice(2,7,## 标题2) # 从索引 2 开始到索引 7 停止,间隔为2
print (a[s])
[2,4,6]
2. [inicio: detener: paso]
b = a [2: 7: 2]
Explicación de dos puntos: si solo se coloca un parámetro, como [2], se devolverá un solo elemento correspondiente al índice. Si es [2:], significa que se extraerán todos los elementos que comiencen desde el índice. Si se utilizan dos parámetros, como [2: 7], extraiga los elementos entre los dos índices ( excluyendo el índice de detención )
3. Incluya puntos suspensivos ... para que la longitud de la tupla seleccionada sea igual a la dimensión de la matriz, use puntos suspensivos para la posición de la fila y devuelva una matriz que contenga los elementos en la fila
import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])
print (a[...,1]) # 第2列元素
print (a[1,...]) # 第2行元素
print (a[...,1:]) # 第2列及剩下的所有元素
#输出结果
[2 4 5]
[3 4 5]
[[2 3]
[4 5]
[5 6]]
Índice avanzado
Índice de matriz entera
import numpy as np
x = np.array([[1, 2], [3, 4], [5, 6]])
y = x[[0,1,2], [0,1,0]]
print (y)
#输出结果,获取数组(0,0),(1,1),(2,0)位置处元素
[1,4,5]
Rebanada: o ... combinada con una matriz indexada
a = np.array([[1,2,3], [4,5,6],[7,8,9]])
c = a[1:3,[1,2]]
#输出结果,1:3切片索引不含尾,[1,2]索引数组包含头和尾
[[5 6]
[8 9]]
Índice booleano
Utilice operaciones booleanas (como operadores de comparación) para obtener una matriz de elementos que cumplan condiciones específicas. x [x> 5]
a [~ np.isnan (a)] filtra NaN
a [np.iscomplex (a)] en a y propone números complejos
La indexación de fantasía se
refiere a la indexación usando matrices de enteros, que es diferente de la división. Siempre copia datos a una nueva matriz . Si el objetivo es una matriz multidimensional, entonces la línea correspondiente al subíndice
x = np.arange (32 ) .reshape ((8,4))
print (x [[4,2,1,7]]) #line index
x=np.arange(32).reshape((8,4))
print (x[np.ix_([1,5,7,2],[0,3,1,2])])#传入多个索引数组(要使用np.ix_)
NumPy Broadcast (Broadcast)
Cuando a.shape ≠ b.shape está en funcionamiento, se activa el mecanismo de transmisión
Reglas de transmisión:
Todas las matrices de entrada están alineadas con la matriz con la forma más larga, y las partes faltantes de la forma se llenan agregando 1 al frente.
La forma de la matriz de salida es el valor máximo en cada dimensión de la forma de la matriz de entrada.
Si una dimensión de la matriz de entrada y la dimensión correspondiente de la matriz de salida tienen la misma longitud o su longitud es 1, la matriz se puede usar para el cálculo; de lo contrario, se produce un error.
Cuando la longitud de una dimensión de la matriz de entrada es 1, el primer conjunto de valores en esta dimensión se utiliza al calcular a lo largo de esta dimensión.
importar numpy como np
a = np.array([[ 0, 0, 0],
[10,10,10],
[20,20,20],
[30,30,30]])
b = np.array([1,2,3])
bb = np.tile(b, (4, 1)) # 重复 b 的各个维度
print(a + bb)
#结果
[[ 1 2 3]
[11 12 13]
[21 22 23]
[31 32 33]]
La función tile () es copiar la matriz original horizontal y verticalmente.
tile (mat, (1, 4)) # La columna se copia cuatro veces el original
NumPy iterate array numpy.ndite
Numpy array operaciones
Modificar forma de matriz
numpy.reshape (arr, newshape, order = 'C')
iterador de elemento de matriz numpy.ndarray.flat
ndarray.flatten (order = 'C') devuelve una copia de la matriz, los cambios realizados en la copia no afectarán a la matriz original, orden: 'C'-por fila,' F'-por columna, 'A'-original Orden, 'K': el orden en que aparecen los elementos en la memoria.
a=[[0 1 2 3]
[4 5 6 7]]
a.flatten()=[0 1 2 3 4 5 6 7]
numpy.ravel (a, order = 'C') elementos de matriz aplanados, la modificación afectará a la matriz original.
Voltear matriz
numpy.transpose (arr, ejes) intercambia las dimensiones de la matriz, de forma similar a numpy.ndarray.T transpose
La función numpy.rollaxis (arr, axis, start) desplaza un eje específico hacia atrás a un
eje de posición específico : el eje que se desplazará hacia atrás , la posición relativa de otros ejes no cambiará
start: el valor predeterminado es cero, lo que significa desplazamiento completo. Se desplazará a una ubicación específica.
a = np.arange(8).reshape(2,2,2)
b=np.rollaxis(a,2)#将轴 2 滚动到轴 0(宽度到深度)
c=np.rollaxis(a,2,1) # 将轴 0 滚动到轴 1:(宽度到高度)
原数组:
[[[0 1]
[2 3]]
[[4 5]
[6 7]]]
b:
[[[0 2]
[4 6]]
[[1 3]
[5 7]]]
c:
[[[0 2]
[1 3]]
[[4 6]
[5 7]]]
numpy.swapaxes (arr, axis1, axis2) intercambian los dos ejes de la matriz
Modificar dimensiones de matriz
numpy.broadcast (arr1, arr2) se usa para imitar el objeto de difusión, devuelve un objeto, el objeto encapsula el resultado de transmitir una matriz a otra matriz.
numpy.broadcast_to (matriz, forma, subok)
numpy.expand_dims (arr, axis) Expande la forma de la matriz insertando un nuevo eje en la posición especificada
numpy.squeeze (arr, axis) elimina las entradas unidimensionales de la forma de una matriz determinada
Unirse a la matriz
numpy.concatenate ((a1, a2, ...), axis) conecta dos o más matrices de la misma forma a lo largo del eje especificado
numpy.stack (arrays, axis) stack stack array a lo largo de un nuevo eje
Matriz dividida
numpy.split (ary, indices_or_sections, axis) Nota: si se trata de una matriz, es la posición para dividir a lo largo del eje (abrir a la izquierda y cerrar a la derecha)
numpy.hsplit se usa para dividir la matriz horizontalmente
numpy.vsplit dividido a lo largo del eje vertical
Agregar y eliminar elementos de matriz
numpy.resize (arr, shape) Si el tamaño de la nueva matriz es mayor que el tamaño original, contiene una copia de los elementos de la matriz original
numpy.append (arr, valores, axis = None) los valores deben tener la misma forma que arr, axis: el valor predeterminado es None. Cuando el eje no está definido, es una suma horizontal, ¡y el retorno es siempre una matriz unidimensional!
numpy.insert (arr, obj, valores, eje) Los parámetros del eje no se pasan, la matriz de entrada se expandirá antes de la inserción
Numpy.delete (arr, obj, axis) devuelve una nueva matriz que elimina la matriz secundaria especificada de la matriz de entrada. Como en el caso de la función insert (), si no se proporcionan parámetros de eje, la matriz de entrada se expandirá.
numpy.unique (arr, return_index, return_inverse, return_counts) elimina elementos duplicados en la matriz
Aritmética de bits NumPy
bitwise_y realiza la operación bitwise
en los elementos de la matriz bitwise_o realiza la operación bitwise en los elementos de la matriz
invertir la inversión bitwise
left_shift desplaza los bits de la representación binaria a la izquierda right_shift desplaza los bits de la representación binaria a la
derecha
operación de función numpy
Funciones de cadena (en la clase de grupo numpy.char)
add () concatena los elementos de cadena de dos matrices uno por uno
multiply () devuelve la cadena multiconectada por el
centro del elemento () cadena centrada
capitalize () convierte la primera letra de la cadena a
título en mayúscula () convierte el carácter La primera letra de cada palabra de la cadena se convierte en mayúscula
inferior () El elemento de matriz se convierte en minúscula
superior () El elemento de matriz se convierte en
división en mayúscula () Especifique el delimitador para dividir la cadena y devolver la lista de matriz
splitlines () devuelve el elemento La lista de líneas en, dividida por una
tira de nueva línea () elimina el carácter específico al principio o al final del elemento
join () conecta los elementos en la matriz al especificar que el delimitador
replace () reemplaza todos los subcaracteres en la cadena con la nueva cadena Los
elementos de la matriz de decodificación de cadenas () llaman a str.decode Los elementos de la matriz de
codificación () llaman a str.encode
Funciones matematicas
sin (), cos (), tan ()
numpy.around (a, decimales) number devuelve el valor redondeado del número especificado
numpy.floor () redondea hacia abajo
numpy.ceil () redondea hacia arriba
Función aritmética
add (), sustraer (), multiplicar () y dividir () sumar, restar, multiplicar y dividir
numpy.reciprocal () devuelve el inverso de parámetro por elemento de
numpy.power () operación de potencia
numpy.mod () resto
NumPy funciones estadísticas
numpy.amin () y numpy.amax () calculan los valores mínimos y
máximos de elementos en la matriz a lo largo del eje especificado numpy.ptp () valor máximo-mínimo
numpy.percentile (a, q, axis) q percentil a calcular número
numpy.median () mediana
numpy.mean () es la media aritmética de la suma del número de elementos a lo largo del eje del elemento de división
numpy.average () no se especifica eje, la matriz se despliega
desviación estándar np.std
NP. var var
Clasificación NumPy, función de selección de pincel condicional
numpy.sort (a, axis, kind, order) kind: el valor predeterminado es 'quicksort' (clasificación rápida)
numpy.argsort () devuelve el valor de índice del valor de la matriz de pequeño a grande.
numpy.lexsort () ordena varias secuencias, devuelve el valor del índice, coloca el elemento con mayor prioridad en la parte posterior
sort_complex (a) clasifica los números complejos en el orden de la parte real y luego la parte imaginaria
(a, kth [, axis , kind, order]) partición de clasificación
argpartition (a, kth [, axis, kind, order] puede usar la palabra clave kind para especificar el algoritmo para particionar la matriz a lo largo del eje especificado
numpy.argmax () y numpy.argmin () a lo largo del dado El eje devuelve el índice de los elementos más grandes y más pequeños. La función
numpy.nonzero () devuelve el índice de los elementos distintos de cero en la matriz de entrada.
Numpy.where ()
numpy.extract () extrae elementos de la matriz de acuerdo con una determinada condición y devuelve los elementos con condiciones completas
Intercambio de bytes
La función numpy.ndarray.byteswap () convierte los bytes de cada elemento del ndarray en big-endian.
NumPy copiar y ver
Las vistas generalmente ocurren cuando la vista se modifica para cambiar el valor original
1. La operación de corte numpy devuelve la vista de los datos originales.
2. Llame a la función view () de ndarray para generar una vista.
La copia generalmente ocurre cuando el valor original de la copia no cambia
Para operaciones de corte de secuencias de Python, llame a la función deepCopy ().
Llame a la función copy () de ndarray para producir una copia
Biblioteca de matriz NumPy (Matrix) numpy.matlib
numpy.matlib.empty (shape, dtype, order) devuelve una nueva matriz
numpy.matlib.zeros ()
numpy.matlib.ones ()
numpy.matlib.eye ()
numpy.matlib.identity () unidad matriz
numpy.matlib La
matriz .rand () siempre es bidimensional, y ndarray es una matriz n-dimensional. Ambos objetos son intercambiables.
NumPy álgebra lineal
dot El producto dot de dos matrices, es decir, los elementos se multiplican correspondientemente.
vdot El producto puntual de dos vectores
internos El producto interno de
dos matrices matmul El producto matricial de dos matrices
linalg.det () El determinante de la matriz
linalg.solve () Resuelve la ecuación de matriz lineal
linalg.inv () Calcula el momento inverso multiplicativo de la matriz
NumPy IO
numpy.save (file, arr, allow_pickle = True, fix_imports = True) La función
numpy.savez () guarda múltiples matrices en un archivo con extensión npz.
np.loadtxt (FILENAME, dtype = int, delimiter = '')
np.savetxt (FILENAME, a, fmt = "% d", delimiter = ",")