有两个数值数组,train_wiggle
和train_spike
。两者的形状都像(1000,101)
。在物理上,它们分别代表1000
点,其中每个点具有101
个特征。
我想分别从wiggle_sample
和spike_sample
生成两个相应的随机样本train_wiggle
和train_spike
。样本大小为10
。具体而言,我希望wiggle_sample
和spike_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()
调用上述功能时,x
和y
的形状为(10, 101)
,而不是(10,101,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)