¿Cómo usar NumPy para crear rápidamente los datos que necesitamos?

Ya sea en el aprendizaje fragmentario habitual o en el aprendizaje de cursos en línea, realizar o ejecutar un algoritmo o modelo en el código no solo puede hacernos comprender más profundamente, sino también fortalecer nuestra memoria. Por tanto, es necesario dedicar algo de tiempo a aprender a crear y organizar los datos que queremos.

1. Matriz NumPy

Una cosa a tener en cuenta sobre las matrices NumPy es que una matriz es una combinación de elementos del mismo tipo dispuestos en un orden determinado .

2. Método de generación de matrices NumPy

Nota
① Para generar una matriz general, puede especificar el tipo de datos del elemento de matriz NumPy mediante el parámetro dtype.
② Generalmente, puede pasar un número o una forma como parámetro, este último genera una matriz de forma de tamaño

2.1 Generando una matriz general

  • Genere una matriz unidimensional: lista entrante
  • Generar una matriz de tuplas: pasar tuplas
  • Genere una matriz multidimensional: pase una lista anidada

Código adjunto:

import numpy as np

arr1 = np.array([1,2,3,4,5])
print(arr1)

arr2 = np.array((1,2,3,4,5))
print(arr2)

arr3 = np.array([[1,2,3],[2,3,4],[4,5,6]])
print(arr3)  ## 这里注意 numpy 数组的打印规则:最内层轴的元素是从左至右,剩下的轴都是从上至下
[1 2 3 4 5]
[1 2 3 4 5]
[[1 2 3]
 [2 3 4]
 [4 5 6]]

2.2 Generar matriz de tipo especial

2.2.1 ceros 、 unos 、 ojo

  • Genere una matriz con todos los ceros en la forma especificada (pase en un solo número o forma): np.zeros ()
  • Genere una matriz de todos los 1 en la forma especificada (pase en un solo número o forma): np.ones ()
  • Genere una matriz cuadrada (pase un solo número): np.eye ()

Nota: Pase la forma en forma de tupla entre paréntesis

arr4 = np.zeros(3) # 传递单个数字是一维数组
print(arr4)

arr5 = np.ones((3, 3))  # 传递shape 是大小为 shape 的数组
print(arr5)

arr6 = np.eye(3)  # 方阵,至只能传递单个数字
print(arr6)
[0. 0. 0.]
[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

2.2.2 Función de secuencia aritmética: función linspace ()

La función linspace () se utiliza para generar vectores de espaciado lineal.
Linspace es similar al operador de dos puntos ":", pero puede controlar directamente el número de puntos e incluir siempre los puntos finales.
(El "lin" en el nombre de "linspace" indica generar valores de espaciado lineal en lugar de la función del hermano logspace, que genera valores de espaciado logarítmico).

arr70 = np.linspace(1, 10, 6)
print(arr70) 

arr71 = np.linspace(1, 10)  # 默认 num=50
print(arr71)
[ 1.   2.8  4.6  6.4  8.2 10. ]
[ 1.          1.18367347  1.36734694  1.55102041  1.73469388  1.91836735
  2.10204082  2.28571429  2.46938776  2.65306122  2.83673469  3.02040816
  3.20408163  3.3877551   3.57142857  3.75510204  3.93877551  4.12244898
  4.30612245  4.48979592  4.67346939  4.85714286  5.04081633  5.2244898
  5.40816327  5.59183673  5.7755102   5.95918367  6.14285714  6.32653061
  6.51020408  6.69387755  6.87755102  7.06122449  7.24489796  7.42857143
  7.6122449   7.79591837  7.97959184  8.16326531  8.34693878  8.53061224
  8.71428571  8.89795918  9.08163265  9.26530612  9.44897959  9.63265306
  9.81632653 10.        ]

2.3 Generar matriz aleatoria

2.3.1 función organizar ()

arreglar()

  • Genere una matriz aleatoria unidimensional de la longitud especificada : np.arange (n)
    (de hecho, el inicio predeterminado = 1, parada = n, paso = 1)
  • Genere una matriz aleatoria de la longitud especificada y la longitud del paso : arange ([start,] stop [, step,], dtype = None)

Código

arr7 = np.arange(10) # 其实就是默认的 start =1, stop =n, step=1
print(arr7)

arr8 = np.arange(1, 10, 2)
print(arr8)
[0 1 2 3 4 5 6 7 8 9]
[1 3 5 7 9]

2.3.2 módulo aleatorio

Usa el módulo aleatorio en NumPy

  • Genere una matriz aleatoria entre (0, 1) : np.random.random () (la entrada es una forma en forma de tupla)
  • Genere una matriz aleatoria entre (0, 1) : np.random.rand () (la entrada es un número que representa la forma)
  • Genere una matriz aleatoria que satisfaga la distribución normal : np.random.randn () (la entrada es un número que representa la forma o la entrada es el número de elementos)
  • Genere una matriz de enteros aleatorios : np.random.randint () (la entrada es el número de elementos o define la forma)
  • Genere una matriz aleatoria después de un orden aleatorio: np.random.shuffle () (ingrese una matriz aleatoria x)
  • Seleccione una matriz aleatoria de las matrices conocidas : np.radom.choice () (ingrese números aleatorios)
rand () y randn ()

rand (d0, d1,…, dn)

randn (d0, d1,…, dn)

arr90 = np.random.rand(5)
print(arr90)   # 这里 n=5 是返回的元素的个数(因为已经默认元素取值为 0-1 之间)
arr91 = np.random.rand(4, 2)  # 这里的参数不需要加()
print(arr91)

arr101 = np.random.randn(5)
print(arr101)  # 这里 n=5 是返回的元素的个数
arr102 = np.random.randn(2, 3)    # 这里的参数不需要加()
print(arr102) 
[0.06005572 0.39201155 0.65739602 0.82993779 0.6834849 ]
[[0.22448704 0.46166822]
 [0.1313628  0.81239307]
 [0.82737089 0.08500505]
 [0.48441804 0.86254244]]
[ 0.31277617  2.11994118 -1.67146697 -0.9564838  -1.20713141]
[[ 0.81955507  1.5992909  -0.72949892]
 [-0.40706872 -1.80163208  0.37124959]]

Fechado ()

randint (bajo, alto = Ninguno, tamaño = Ninguno, dtype = 'l')

arr11 = np.random.randint(5)
print(arr11)  # 这里 n=5 相当于上限(并不是返回的元素个数),只返回了一个数字
arr12 = np.random.randint(1,5, (2, 3))  # 这里的shape参数需要加(),或者选择 size=(,)
print(arr12)
arr13 = np.random.randint(5, size=(2, 3))
print(arr13)
4
[[2 4 4]
 [2 1 3]]
[[3 2 3]
 [3 2 1]]

Nota:
① Para el método rand () y el método randn (),
si el parámetro de entrada es un número n, se devolverán n números aleatorios;
si la entrada son dos o más números, se generará una matriz del tamaño de estos números múltiples. ser devuelto ;

② Para el método randint (),
si el parámetro de entrada es un número n, se devuelve un número aleatorio que no exceda n; si se ingresan un solo número n y una forma, n es el límite superior del elemento (no tomado), y forma
es el tamaño de la matriz generada.

2.4 Cambiar la forma de la matriz

Utilice la función reshape ()

arr14 = np.arange(8).reshape(4,2)
print(arr14)
 
arr15 = np.random.rand(8).reshape(4,2)
print(arr15)

arr16 = np.random.randn(8).reshape(4,2)
print(arr16)

arr17 = np.random.randint(8,size=(2,4)).reshape(4,2)
print(arr17)
[[0 1]
 [2 3]
 [4 5]
 [6 7]]
[[0.74805737 0.4715235 ]
 [0.61835228 0.36544255]
 [0.19811176 0.37036763]
 [0.21455191 0.09242501]]
[[-0.4904222   0.40334254]
 [ 1.06279067  0.8108894 ]
 [-0.62594376  0.79288496]
 [ 1.12483527  0.66219263]]
[[7 4]
 [5 3]
 [1 2]
 [1 6]]

De hecho, se puede ver en lo anterior que el método de usar reshape () es muy sencillo y más conveniente que pasar shape a los parámetros de la función.

Una cosa a tener en cuenta: randint () debe usar el parámetro de tamaño para generar una matriz multidimensional primero, y luego usar reshape ().

[:, por ejemplo, newaxis]

Una forma común en el aprendizaje automático es usar [:, np.newaxis] para convertir una matriz unidimensional en la forma de matriz de características que queremos.

Nota: np.newaxis agrega un eje a numpy.ndarray

import numpy as np

rng = np.random.RandomState(42) 
x = 10* rng.rand(5)
print(x)
print(x.shape)
[3.74540119 9.50714306 7.31993942 5.98658484 1.5601864 ]
(5,)

Una forma es usar el método reshape () mencionado anteriormente:

X = x.reshape(-1, 1)
print(X)
print(X.shape)
X = x.reshape(-1, 1)
print(X)
print(X.shape)
[[3.74540119]
 [9.50714306]
 [7.31993942]
 [5.98658484]
 [1.5601864 ]]
(5, 1)

Luego está este método común:

X = x[:, np.newaxis]
print(X)
print(X.shape)
[[3.74540119]
 [9.50714306]
 [7.31993942]
 [5.98658484]
 [1.5601864 ]]
(5, 1)

3. Aplicación

Genere puntos dispersos (puntos aleatorios bidimensionales) que cubran el área rectangular especificada

  • Módulo de importación
import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
import seaborn as sns; sns.set()

from sklearn.datasets import make_blobs
  • Puntos aleatorios bidimensionales (área fija)
rng = np.random.RandomState(0)
X_new = [-1, -1] + [5, 7] * rng.rand(2000, 2)

plt.scatter(X_new[:, 0], X_new[:, 1], s=10) 

X_new 的 forma: (2000 , 2)

Rango cubierto por puntos aleatorios: X_new Correspondencia: coordenadas de la esquina inferior izquierda + valor aumentado

  • Visualiza los resultados
    Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/Robin_Pi/article/details/103860398
Recomendado
Clasificación