【发布时间】:2022-01-11 15:55:35
【问题描述】:
我有一个名为 input_north 的 numpy 数组,其形状为 (823886, 13)
我想从这个数组中随机选择 82388 行并将它们存储在另一个名为真值的数组中。但是,我也想从原始 input_north 数组中删除随机采样的行。
这是我所做的,但它不能正常工作:
# first i make 82388 random indices between 1-823886
indices = np.random.choice(823886, 82388)
# then I use the indices to create my truth array
truth = input_north[indicies, :]
# I then create a new array with the truth rows deleted
input = np.delete(input_north, indices, 0)
当我这样做时,我会得到一个大小正确的真值数组 (82388, 13),其中包含随机的行样本。但是,输入数组的形状为 (745496, 13)。这意味着并非所有提取到真值数组的行都已在输入数组中删除,因为它包含的行比我想要的多约 4000 行。如何从 inut_north 数据中提取行并删除已提取的行?
【问题讨论】:
-
将
replace=False参数添加到np.random.choice?使用minimal reproducible example,您可以更轻松地查看代码中发生的情况。尽量避免影响内置函数的变量名称。 -
顺便说一句:您正在从
0 - 823885之间的索引中进行选择(包括 0 但不包括 823886) -
@MichaelSzczesny 谢谢,这解决了我的问题!并指出,我会改变这一点。谢谢!
标签: python arrays numpy indices