从数组中多次选择多列

问题描述 投票:0回答:1

嗨,我有以下设置:

来自 scipy

def _bootstrap_resample(sample, n_resamples=None, random_state=None):
    """Bootstrap resample the sample."""
    n = sample.shape[-1]

    # bootstrap - each row is a random resample of original observations
    i = rng_integers(random_state, 0, n, (n_resamples, n))

    resamples = sample[..., i]
    return resamples

就我而言:

样品:

[[ 0  1  2  3  4  5  6  7  8  9]
 [10 11 12 13 14 15 16 17 18 19]]

我:

[[0 0 0 0 0 1 1 1 1 1]
 [2 2 2 2 2 3 3 3 3 3]]

我想要什么:

[[[ 0  0  0  0  0  1  1  1  1  1]
  [10 10 10 10 10 11 11 11 11 11]]

 [[ 2  2  2  2  2  3  3  3  3  3]
  [12 12 12 12 12 13 13 13 13 13]]]

即i 的多行只是说明要采用哪些列并创建新示例。提供的代码:

重新采样 = 样本[..., i]

不幸的是并没有这样做并产生

[[[ 0  0  0  0  0  1  1  1  1  1]
  [ 2  2  2  2  2  3  3  3  3  3]]

 [[10 10 10 10 10 11 11 11 11 11]
  [12 12 12 12 12 13 13 13 13 13]]]

我怎样才能在这里得到我想要的东西?

python-3.x numpy scipy numpy-ndarray
1个回答
0
投票

确切的预期逻辑尚不完全清楚,但您可能想要

swapaxes
:

resamples = sample[..., i].swapaxes(0, 1)

输出:

array([[[ 0,  0,  0,  0,  0,  1,  1,  1,  1,  1],
        [10, 10, 10, 10, 10, 11, 11, 11, 11, 11]],

       [[ 2,  2,  2,  2,  2,  3,  3,  3,  3,  3],
        [12, 12, 12, 12, 12, 13, 13, 13, 13, 13]]])
© www.soinside.com 2019 - 2024. All rights reserved.