我有不同深度的输入数组,范围从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]
这对我没有用,因为它们不连续,我不能用它来修剪我的体积。
有什么方法可以获取连续的随机样本吗?
谢谢
答案 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")