python-- resumen de aprendizaje numpy

Tabla de contenido

Un uso común de Numpy

1. Crea una matriz

2. Indexación y corte

3. dtype

4. Método general

4.1 arango

4.2 ceros

4,3 unidades

4.4 ojo

4.5 rand

4.6 citas

4.7 max min argmax argmin

Dos, uso avanzado de NumPy

1. remodelar

2. Fusionar y dividir

2.1 concatenar

2.2 array_split

3. Buscar y filtrar

3.1 Búsqueda

3.2 Cribado

4. Clasificación

5. Funciones trigonométricas

6. Aleatorio

6.1 Probabilidad aleatoria

6.2 Disposición aleatoria

6.3 Distribución aleatoria


Un uso común de Numpy

1. Crea una matriz

1) Utilice np.array para crear

import numpy as np
arr = np.array([1, 2, 3, 4, 5])

La salida de arr es array([1, 2, 3, 4, 5]).

Ingresamos el siguiente código para crear una matriz bidimensional:

my_matrix = [[1,2,3],[4,5,6],[7,8,9]]
mtrx= np.array(my_matrix)

La salida de mtrx es la siguiente:

array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

2) Crea una matriz especial

#生成特殊数组
a1 = np.zeros((3,5)) #生成全0数组
print(a1)
b1 = np.ones((2,3))
print(b1)

3) Use arange () para generar una matriz

# 利用arange()生成数组
c1 = np.arange(10,20,2)
print(c1)

2. Indexación y corte

1) Indexe la matriz unidimensional y la matriz de dos dígitos de la siguiente manera:

print('arr[0]=',arr[0],'mtrx[1,1]=',mtrx[1,1])

Salida  arr[0]= 1 mtrx[1,1]= 5.

Corta la matriz:

arr[:3]

El resultado de salida es  array([1, 2, 3]).

2) Rebanada de cuenta regresiva:

arr[-3:-1]

Salida  array([3, 4]).

Agregue el tamaño del paso (paso), el tamaño del paso determina el intervalo de corte:

arr[1:4:2]

Salida  array([2, 4]).

3) Rebanada de matriz bidimensional:

mtrx[0:2, 0:2]

Salida, el significado del código es tomar la primera y segunda filas, la primera y segunda columnas:

array([[1, 2],
       [4, 5]])

3. dtype

El dtpe de NumPy tiene los siguientes tipos de datos:

  • i - entero

  • b - booleano

  • u - entero sin signo

  • f - flotar

  • c - flotador complejo

  • m - timedelta

  • M - fecha y hora

  • O - objeto

  • S - cuerda

  • U - cadena Unicode

  • V - fragmento de memoria fijo para otro tipo (vacío)

import numpy as np
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array(['apple', 'banana', 'cherry'])
print('arr1.dtype=',arr1.dtype,'arr2.dtype=',arr2.dtype)

La salida es  arr1.dtype= int32 arr2.dtype= <U6. El tipo de datos de arr1 es int32, y <U6 de arr2 significa no más de 6 cadenas Unicode.

Podemos especificar el tipo de dtype.

arr = np.array(['1', '2', '3'], dtype='f')

El resultado de salida es  array([1., 2., 3.], dtype=float32), donde 1. significa 1.0, y puede ver que dtype está establecido en el tipo de datos float32.

4. Método general

4.1 arango

np.arange(0,101,2)El resultado de salida es el siguiente: Este comando indica que los datos se generan uniformemente en el intervalo [0,101) y el paso del intervalo es 2.

array([  0,   2,   4,   6,   8,  10,  12,  14,  16,  18,  20,  22,  24,
        26,  28,  30,  32,  34,  36,  38,  40,  42,  44,  46,  48,  50,
        52,  54,  56,  58,  60,  62,  64,  66,  68,  70,  72,  74,  76,
        78,  80,  82,  84,  86,  88,  90,  92,  94,  96,  98, 100])

4.2 ceros

np.zeros((2,5))El resultado de salida es el siguiente: Este comando indica que genera una matriz (matriz bidimensional) con 2 filas y 5 columnas, todas ceros.

array([[0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.]])

4,3 unidades

np.ones((4,4))El resultado de salida es el siguiente: Este comando indica que se emite una matriz con todos los 1 en 4 filas y 4 columnas.

array([[1., 1., 1., 1.],
       [1., 1., 1., 1.],
       [1., 1., 1., 1.],
       [1., 1., 1., 1.]])

4.4 ojo

np.eye(5)El resultado de salida es el siguiente: Este comando indica que la salida es una matriz cuadrada de 5 filas y 5 columnas con una diagonal de 1 y todos ceros.

Una matriz cuadrada es una matriz con las mismas filas y columnas. ¿Cuál es la matriz de identidad en nuestras matemáticas?

array([[1., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 0., 1., 0., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 1.]])

4.5 rand

np.random.rand(5,2) El comando genera 5 filas y 2 columnas de números aleatorios.

array([[0.67227856, 0.4880784 ],
       [0.82549517, 0.03144639],
       [0.80804996, 0.56561742],
       [0.2976225 , 0.04669572],
       [0.9906274 , 0.00682573]])

Si desea asegurarse de que se genere aleatoriamente el mismo número aleatorio que en este ejemplo, puede usar la misma semilla aleatoria que en este ejemplo. np.random.seedEstablecer por método.

np.random.seed(99)
np.random.rand(5,2)

4.6 citas

np.random.randint(0,101,(4,5))El resultado de salida es el siguiente: Este comando indica que se selecciona aleatoriamente un número entero en el intervalo [0,101) para generar una matriz con 4 filas y 5 columnas.

array([[ 1, 35, 57, 40, 73],
       [82, 68, 69, 52,  1],
       [23, 35, 55, 65, 48],
       [93, 59, 87,  2, 64]])

4.7 max min argmax argmin

Primero generamos aleatoriamente un conjunto de números:

np.random.seed(99)
ranarr = np.random.randint(0,101,10)
ranarr

Producción:

array([ 1, 35, 57, 40, 73, 82, 68, 69, 52,  1])

Ver los valores máximos y mínimos: utilizar

print('ranarr.max()=',ranarr.max(),'ranarr.min()=',ranarr.min())

El resultado de salida es ranarr.max()= 82 ranarr.min()= 1.
Las posiciones de índice de los valores máximo y mínimo son:

print('ranarr.argmax()=',ranarr.argmax(),'ranarr.argmin()=',ranarr.argmin())

Salida:ranarr.argmax()= 5 ranarr.argmin()= 0 .

Tenga en cuenta que cuando hay varios valores máximos y mínimos, tome la posición del índice anterior.

Resumido como sigue:

.min (): devuelve el valor mínimo

.max (): devuelve el valor máximo
.argmin (): devuelve el índice del valor mínimo
.argmax (): devuelve el índice del valor máximo.

print(ranarr.argmin())
print(ranarr.argmax())
print(ranarr.max())
print(ranarr.min())

Dos, uso avanzado de NumPy

1. remodelar

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newarr = arr.reshape(4, 3)

Entre ellos, arr es una matriz unidimensional y newarr es una matriz de dos dígitos, donde la fila es 4 y la columna es 3 .

la remodelación se usa para dar forma a la matriz, y la forma se usa para reflejar las dimensiones de la matriz

print('arr.shape=',arr.shape,'newarr.shape=',newarr.shape)

Salida  arr.shape= (12,) newarr.shape= (4, 3).

newarrEl resultado de salida es el siguiente:

array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])

2. Fusionar y dividir

2.1 concatenar

Fusión de matriz unidimensional: use np.concatenar ((arr1, arr2)) Nota: dos capas de corchetes

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr = np.concatenate((arr1, arr2))
arr

Salida: array([1, 2, 3, 4, 5, 6]) .

Fusión de matrices bidimensionales:

arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
arr = np.concatenate((arr1, arr2))
arr

La salida es:

array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])

Agregamos el parámetro axis = 1:

arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
arr = np.concatenate((arr1, arr2), axis=1)
arr

La salida es:

array([[1, 2, 5, 6],
       [3, 4, 7, 8]])

Movemos el mouse  concatenatey presionamos la tecla de atajo para Shift+Tabver la descripción del método.

Puede ver que el concatenatemétodo realiza la operación de combinación a lo largo del eje existente y el eje predeterminado = 0.

Cuando establecemos axis = 1, la operación de fusión procede a lo largo de la columna.

El resumen es

print("axis=0")
print(arr)
arr2 = np.concatenate((arr1,arr2),axis = 1)
print("axis=1")
print(arr2)

 

Los resultados de la operación son:

2.2 array_split

Divida la matriz:

arr = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12]])
newarr = np.array_split(arr, 3)
newarr

El valor de newarr es:

[array([[1, 2],
        [3, 4]]),
 array([[5, 6],
        [7, 8]]),
 array([[ 9, 10],
        [11, 12]])]

3. Buscar y filtrar

3.1 Búsqueda

NumPy puede whereencontrar el índice de la matriz que cumple la condición a través del método.

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x = np.where(arr%2 == 0)
x

Producción:

(array([1, 3, 5, 7], dtype=int64),)

3.2 Cribado

Echemos un vistazo al siguiente código:

bool_arr = arr > 4
arr[bool_arr]

Salida:array([5, 6, 7, 8]) . Esta vez devolvemos el valor de la matriz, no el índice. bool_arr¿Qué estamos mirando exactamente? bool_arrLa salida es:

array([False, False, False, False,  True,  True,  True,  True])

Entonces podemos reemplazar el filtro anterior con el siguiente comando.

arr[arr > 4]

4. Clasificación

sortEl método puede ordenar la matriz ndarry.

arr = np.array(['banana', 'cherry', 'apple'])
np.sort(arr)

Después de la salida de clasificación de resultados: array(['apple', 'banana', 'cherry'], dtype='<U6').

Para una matriz bidimensional, el sortmétodo ordena cada fila individualmente.

arr = np.array([[3, 2, 4], [5, 0, 1]])
np.sort(arr)

Resultado de salida:

array([[2, 3, 4],
       [0, 1, 5]])

5. Funciones trigonométricas

Utilice np.sin () directamente

# c1 = np.arange(10,20,2)
# print(c1)
#
# #使用数学中的三角函数
# d1 = np.sin(c1)
# print(d1)

6. Aleatorio

6.1 Probabilidad aleatoria

¿Y si queremos cumplir con los siguientes requisitos?

Genere una matriz unidimensional de 100 valores, donde cada valor debe ser 3, 5, 7 o 9. Establezca la probabilidad de este valor en 3 a 0,1. Establezca la probabilidad de este valor en 5 a 0,3. La probabilidad de que este valor sea 7 se establece en 0,6. Establezca la probabilidad de este valor en 9 a 0.

Usamos el siguiente comando para resolver:

random.choice([3, 5, 7, 9], p=[0.1, 0.3, 0.6, 0.0], size=(100))

Resultado de salida:

array([7, 5, 7, 7, 7, 7, 5, 7, 5, 7, 7, 5, 5, 7, 7, 5, 3, 5, 7, 7, 7, 7,
       7, 7, 7, 7, 7, 7, 5, 3, 7, 5, 7, 5, 7, 3, 7, 7, 3, 7, 7, 7, 7, 3,
       5, 7, 7, 5, 7, 7, 5, 3, 5, 7, 7, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 5,
       7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 3, 7, 7, 5, 7, 5, 7, 5, 7, 7, 5, 7,
       7, 7, 7, 7, 7, 3, 5, 5, 7, 5, 7, 5])

6.2 Disposición aleatoria

 permutation genera una nueva permutación aleatoria basada en la matriz original.

np.random.seed(99)
arr = np.array([1, 2, 3, 4, 5])
new_arr = np.random.permutation(arr)
new_arr

La salida array([3, 1, 5, 4, 2])es:. La matriz original arrpermanece sin cambios.

shuffle cambia la matriz original a una disposición aleatoria. Shuffle significa shuffle en inglés.

np.random.seed(99)
arr = np.array([1, 2, 3, 4, 5])
np.random.shuffle(arr)
arr

La salida array([3, 1, 5, 4, 2])es:. Se arrcambia la matriz original .

6.3 Distribución aleatoria

Utilice el np.random.normalmétodo para generar números aleatorios que se ajusten a una distribución normal.

x = np.random.normal(loc=1, scale=2, size=(2, 3))
x

El resultado de salida es:

array([[ 0.14998973,  3.22564777,  1.48094109],
       [ 2.252752  , -1.64038195,  2.8590667 ]])

Si queremos ver la distribución aleatoria de x, necesitamos instalar seaborn para dibujar la imagen. Instalar usando pip:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple seaborn

import matplotlib.pyplot as plt
import seaborn as sns
sns.distplot(x, hist=False)
plt.show()

imagen

Distribución binomial

Utilice el np.random.binomialmétodo para generar números aleatorios que se ajusten a la distribución binomial.

x = np.random.binomial(n=10, p=0.5, size=10)
x

La salida array([8, 6, 6, 2, 5, 5, 5, 5, 3, 4])es:.

Dibuja la imagen:

import matplotlib.pyplot as plt
import seaborn as sns
sns.distplot(x, hist=True, kde=False)
plt.show()

imagen

Distribución polinomial

La distribución polinomial es una representación general de la distribución binomial. Utilice el np.random.multinomialmétodo para generar números aleatorios que se ajusten a la distribución polinomial.

x = np.random.multinomial(n=6, pvals=[1/6, 1/6, 1/6, 1/6, 1/6, 1/6])
x

El código anterior puede entenderse simplemente como lanzar un dado. n = 6 es la cara de los dados y pvals indica que la probabilidad de cada cara es 1/6.

 

 

Supongo que te gusta

Origin blog.csdn.net/yezonghui/article/details/113752590
Recomendado
Clasificación