如何从列表中随机选择一个连续样本?

时间:2018-12-23 21:12:31

标签: python numpy random

我有不同深度的输入数组,范围从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 :(得分:4)

如果我理解正确,那么您想随机选择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")