从具有替换的多维numpy数组中选择随机数组

时间:2014-11-23 21:47:32

标签: python numpy multidimensional-array

我有一个多维ndarray,我希望随机选择1000个数组替换。这在我看来很简单,但是我正在努力融入替换部分。

这个ndarray中有3065个数组。

np.shape(train_spam)
(3065L, 58L)

我尝试使用np.random.shuffle(),但这并没有考虑到替换。

np.random.shuffle(train_spam)
X_train = train_spam[:1000,1:57]

我的最终输出的形状为(1000L,58L)。

我想我可以使用带

的ndarray运行循环
X_train = train_spam[0:57]

然后追加,但我无法弄清楚如何正确追加,所以它看起来一样。任何帮助将不胜感激

3 个答案:

答案 0 :(得分:3)

您可以使用

selected = train_spam[np.random.randint(train_spam.shape[0], size=1000)]

答案 1 :(得分:0)

您还可以使用[random.randrange(n) for i in range(k)]构建索引列表。

k = 1000                                           # Number of elements to select.
n = train_spam.shape[0]                            # Number of elements in array.
indices = [random.randrange(n) for i in range(k)]  # A plain Python list.
selected = train_spam[np.array(indices)]           # Convert indices to ndarray.

如果你有一个普通的Python列表,你想从中选择替换元素,你可以这样做:

pets = ['ant', 'bear', 'cat', 'dog', 'elephant', 'flamingo', 'gorilla', 'horse']
n = len(pets)
k = 10
selected = [pets[random.randrange(n)] for i in range(k)]

答案 2 :(得分:0)

您可以使用随机生成器从ndarray中随机获取多个数组。

a = np.array([[1,2,3],[2,3,4], [5,6,7]])
rng = np.random.default_rng()
rng.choice(a, 2)