代码之家  ›  专栏  ›  技术社区  ›  user288609

关于对二维阵列进行采样并使采样阵列具有三维形状

  •  1
  • user288609  · 技术社区  · 7 年前

    有两个数值数组, train_wiggle train_spike . 两者的形状都像 (1000,101) . 物理上,它们分别代表 1000 每个点具有 101 特征。

    我想生成两个相应的随机样本, wiggle_sample spike_sample 从…起 列车摆动 train\u道钉 分别地样本量为 10 . 具体来说,我想 wiggle\u样本 spike\u样本 有形状 (10,101,1) . 我就是这么做的

    def generate_train_samples():
        sample_id = np.random.randint(low=0,high=999,size=10)
        input_seq = np.take(train_wiggle,sample_id,axis=0)
        output_seq = np.take(train_spike,sample_id,axis=0)
        return input_seq, output_seq # in shape: (batch_size, time_steps, feature_dim)
    
    x,y = generate_train_samples()
    

    调用上述函数时 x y 有形状 (10, 101) ,而不是我想要的(10101,1)。如何修改代码?

    1 回复  |  直到 7 年前
        1
  •  0
  •   kwinkunks    7 年前

    我同意这样的评论,即您可能不需要担心添加这个额外维度,但有时它会很有帮助(例如在广播时)。因此,可以使用 np.expand_dims()

    >>> import numpy as np
    >>> a = np.random.random((10, 101))
    >>> np.expand_dims(a, -1).shape
    (10, 101, 1)
    

    ... 或 np.reshape() 如果您愿意,它有时具有作为数组本身的方法的优势:

    >>> a.reshape((*a.shape, 1)).shape
    (10, 101, 1)