我有一个大小为46928x28x28
的numpy数组,我想把这个数组随机分成两个子矩阵,大小分别是(41928x28x28)
和{
ind = np.random.randint(input_matrix.shape[0], size=(5000,))
rest = np.array([i for i in range(0,input_matrix.shape[0]) if i not in ind])
rest = np.array(rest)
然而,令人惊讶的是ind的形状是(5000,)
,而其余的形状是{
一种方法是尝试从
sklearn
documentation使用train_test_split
:结果:
^{pr2}$我同意这样的评论:
train_test_split
可能是一个好办法。但是,由于它被标记为numpy
,所以这里有一种numpy
的方法,非常快:您的输出:
^{pr2}$计时:
只是出于好奇,我将这个
numpy
方法与sklearn.model_selection.train_test_split
进行了比较,结果差别不大。train_test_split
速度更快,但只有一点点。无论如何,我认为train_test_split
是更好的选择。在方法:0.26082248413999876秒
train_test_split
方法:0.2221719217000092秒错误是
randint
给出了一些重复的索引。您可以通过打印len(set(ind))
来测试它,您将看到它小于5000。在要使用相同的想法,只需将第一行替换为
也就是说,由于列表上的迭代,第二行代码相当慢。用布尔向量定义所需的索引要快得多,这将允许您使用否定运算符
^{pr2}$~
。在在我的机器上,这种方法与实现scikit.学习这让我觉得这两个人做的完全一样。在
相关问题 更多 >
编程相关推荐