una rellenar nxn matriz matrices llenar ingresar imprimir guardar elemento ejemplos datos como buscar python arrays random shuffle

rellenar - Mezclar una matriz con python, aleatorizar el orden de elementos de la matriz con python



matrices en python pdf (10)

¿Cuál es la forma más fácil de mezclar una matriz con python?


Además de las respuestas anteriores, me gustaría introducir otra función.

numpy.random.shuffle , así como random.shuffle realiza un barajado in situ. Sin embargo, si desea devolver una matriz numpy.random.permutation es la función que debe utilizar.


Al tratar con las listas de Python normales, random.shuffle() hará el trabajo tal como se muestra en las respuestas anteriores.

Pero cuando se ndarray de ndarray ( numpy.array ), random.shuffle parece romper el ndarray original. Aquí hay un ejemplo:

import random import numpy as np import numpy.random a = np.array([1,2,3,4,5,6]) a.shape = (3,2) print a random.shuffle(a) # a will definitely be destroyed print a

Solo use: np.random.shuffle(a)

Al igual que random.shuffle , np.random.shuffle baraja la matriz en el lugar.


En caso de que desee una nueva matriz, puede utilizar la sample :

import random new_array = random.sample( array, len(array) )


Las otras respuestas son las más fáciles, sin embargo, es un poco molesto que el método random.shuffle no devuelva nada en realidad, simplemente ordena la lista dada. Si desea encadenar llamadas o simplemente poder declarar una matriz aleatoria en una línea, puede hacerlo:

import random def my_shuffle(array): random.shuffle(array) return array

Entonces puedes hacer líneas como:

for suit in my_shuffle([''hearts'', ''spades'', ''clubs'', ''diamonds'']):


No sé si usé random.shuffle() pero me devolvió ''Ninguno'', así que escribí esto, podría ser útil para alguien

def shuffle(arr): for n in range(len(arr) - 1): rnd = random.randint(0, (len(arr) - 1)) val1 = arr[rnd] val2 = arr[rnd - 1] arr[rnd - 1] = val1 arr[rnd] = val2 return arr


sklearn alternativa de hacer esto usando sklearn

from sklearn.utils import shuffle X=[1,2,3] y = [''one'', ''two'', ''three''] X, y = shuffle(X, y, random_state=0) print(X) print(y)

Salida:

[2, 1, 3] [''two'', ''one'', ''three'']

Ventaja: puede aleatorizar múltiples matrices simultáneamente sin interrumpir la asignación. Y ''random_state'' puede controlar la mezcla de comportamientos reproducibles.


# arr = numpy array to shuffle def shuffle(arr): a = numpy.arange(len(arr)) b = numpy.empty(1) for i in range(len(arr)): sel = numpy.random.random_integers(0, high=len(a)-1, size=1) b = numpy.append(b, a[sel]) a = numpy.delete(a, sel) b = b[1:].astype(int) return arr[b]


import random random.shuffle(array)


import random random.shuffle(array)


sorted(array, key = lambda x: random.random())