用python中的另一个多维数组从多维数组进行采样的最简单方法



我有一个3d numpy数组,看起来像这个

A = np.random.randin(0, 10, (23, 23, 39))        # H, W, D

并希望从其深度随机采样,以达到仅具有HW的2d阵列

注意…这不适用于

B = A[np.random.randint(0, 39, (23,23))]

我想这就是您想要的:

B = np.array([x[np.random.randint(A.shape[2])] for y in A for x in y]).reshape(A.shape[:-1])

一点解释:我们使用列表理解来二维地迭代列表中的每个子数组(y在维度0上迭代,x在维度1上迭代,我们得到维度2的数组(

在每个数组中,我们取一个随机数。

结果是一个大的一维数组,包含每个子数组中的一个元素。我们最终调整了数组的大小,使其为A的形状,减去最后一个维度(在我们的情况下,为23 x 23(|

希望这就是你想要的!

最新更新