Выбор объектов случайным образом из заданной матрицы с использованием Python - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть матрица 6 на 6, созданная с использованием Python. Из 36 значений, включенных в матрицу, я хочу выбрать любые 10 значений (следует выбирать значения случайным образом, а не указывать позицию) из матрицы, отличной от нуля, и выбранные 10 значений должны быть напечатаны в конце. Пожалуйста, помогите мне с кодом в Python

 import numpy as np
 from numpy import random
 #import Dataframe.sample as df 
 rows = 6
 cols = 6 
 a = np.matrix(np.random.randint(220,376, size=(rows,cols)))
 print (a)

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Рассмотрим матрицу 6x6:

x = np.arange(36).reshape(6,6)

Затем вы можете использовать random.choice () для матрицы, свернутой в одно измерение ( flatten () )

np.random.choice(x.flatten(), 10, replace=False)

, чтобы получить 10 случайных элементов.


Для np.matrix, как и в вашем случае, оно меняется, и я не знаю прямого метода. Что вы можете сделать, это следующим образом. Вы выбираете индексы.

selected = np.random.choice(a.shape[0]*a.shape[1], 10, replace=False)
# e.g., array([[25, 19,  5,  4, 32, 33, 13,  1,  2, 16]]) 
# a.shape[0]*a.shape[1]=36 in your case

Наконец, вы берете элементы, соответствующие выбранным индексам в матрице flatten ()

a.flatten()[0,selected]

Редактировать

Существует также прямой метод, основанный на numpy.matrix.A1

a = np.matrix(np.random.randint(220,376, size=(6,6)))
elements = np.random.choice(a.A1, 10, replace=False)
0 голосов
/ 05 сентября 2018

Вы можете получить доступ к матрице с помощью matrix[y][x] и генерировать случайные индексы с помощью пакета random. Случайное можно использовать с import random. После импорта вы можете сгенерировать случайный индекс с помощью x = random.randint(0,5).

Краткий пример:

import random
for i in range(10): #10 times
    x = random.randint(0,5) #index X
    y = random.randint(0,5) #index Y
    value = matrix[y][x] #get the value
    print(value) #print the value

Обратите внимание, что имя моей матрицы matrix, ваше имя a.

...