我有一个3d numpy数组,看起来像这个
A = np.random.randin(0, 10, (23, 23, 39)) # H, W, D
并希望从其深度随机采样,以达到仅具有H和W的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(|
希望这就是你想要的!