关于采样二维阵列并让采样阵列具有三维形状

时间:2018-02-05 04:11:19

标签: python python-2.7 numpy scipy

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

我想分别从wiggle_samplespike_sample生成两个相应的随机样本train_wiggletrain_spike。样本大小为10。具体而言,我希望wiggle_samplespike_sample具有形状(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()

调用上述功能时,xy的形状为(10, 101),而不是(10,101,1)。如何修改代码?

1 个答案:

答案 0 :(得分:0)

我同意您可能不需要担心添加此额外维度的评论,但有时它可能会有所帮助(例如,在广播时)。因此,您可以使用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)