Как выбрать случайную непрерывную выборку из списка? - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть входные массивы различной глубины, в диапазоне от 20 до 32. Я не могу дополнить их, чтобы они имели одинаковый размер, поэтому лучший вариант - произвольно выбирать глубину z изображения на каждой итерации.

Я читал, что numpy.random.choice() может быть использовано для этого, но я получаю случайное расположение индексов, я хочу непрерывный выбор.

z_values = np.arange(img.shape[0]) # get the depth of this sample
z_rand = np.random.choice(z_values, 20) # create an index array for croping

Вышеприведенное дает мне:

[22  4 31 19  9 24 13  6 20 17 28  8 11 27 14 15 30 16 12 25]

Что для меня бесполезно, поскольку они не являются непрерывными, и я не могу использовать их для обрезки своего объема.

Есть ли способ получить непрерывную случайную выборку?

Спасибо

1 Ответ

0 голосов
/ 24 декабря 2018

Если я правильно понимаю, вы хотите выбрать 20 срезов длины наугад.Так что просто настройте свою логику, чтобы найти правильную начальную точку случайным образом, и нарежьте, чтобы получить нужный результат.

import numpy as np
import random
#pretending this is the image
img = np.array(range(100, 3200, 100))

size_to_slice = 20
if img.shape[0] >= size_to_slice: #make sure you are able to get the length you need
    start = random.randint(0, img.shape[0] - size_to_slice)    
    z_rand = img[start: start + size_to_slice]
else:
    print("selection invalid")
...