我试着用行替换形状为(4,2)的base
2dnumpy数组,比如10次。最终的输出应该是一个3D numpy数组。在
已经尝试了下面的代码,它是有效的。但是有没有办法不使用for循环来完成呢?在
base=np.array([[20,30],[50,60],[70,80],[10,30]])
print(np.shape(base))
nsample=10
tmp=np.zeros((np.shape(base)[0],np.shape(base)[1],10))
for i in range(nsample):
id_pick = np.random.choice(np.shape(base)[0], size=(np.shape(base)[0]))
print(id_pick)
boot1=base[id_pick,:]
tmp[:,:,i]=boot1
print(tmp)
您可以使用numpy中的stack函数。那么你的代码应该是:
这里有一个矢量化方法-
基本思想是生成所有可能的索引,其中
np.random.randint
为idx
。这将是一个形状(m,nsample)
的数组。我们使用这个数组沿着第一个轴索引输入数组。因此,它从base
中选择随机行。为了得到带有形状(m,n,nsample)
的最终输出,我们需要交换最后两个轴。在相关问题 更多 >
编程相关推荐