Python 使用替换从多维numpy数组中选择随机数组

Python 使用替换从多维numpy数组中选择随机数组,python,numpy,multidimensional-array,Python,Numpy,Multidimensional Array,我有一个多维数组,我希望随机选择1000个替换数组。在我看来,这似乎很简单,但替换部分我正在努力纳入 此阵列中有3065个阵列 np.shape(train_spam) (3065L, 58L) 我尝试使用np.random.shuffle(),但这并没有考虑替换的可能性 np.random.shuffle(train_spam) X_train = train_spam[:1000,1:57] 我的最终输出的ea形状为(1000L,58L) 我想我可以用一个数组来运行一个循环 X_trai

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

此阵列中有3065个阵列

np.shape(train_spam)
(3065L, 58L)
我尝试使用np.random.shuffle(),但这并没有考虑替换的可能性

np.random.shuffle(train_spam)
X_train = train_spam[:1000,1:57]
我的最终输出的ea形状为(1000L,58L)

我想我可以用一个数组来运行一个循环

X_train = train_spam[0:57]
然后追加,但我不知道如何正确追加,所以看起来是一样的。非常感谢您提供的任何帮助

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

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

如果您有一个普通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)]

您可以使用随机生成器从ndarray随机获得多个阵列

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

这个问题是针对numpy的吗?如果您只需要一种选择随机数组并进行替换的通用方法,我建议
selection=[arrays[random.randrange(n)][:]for I in range(k)]
其中
n
是数组的大小
k
是您希望通过替换选择的元素数。如果这符合您的需要,请让我知道,我会发布一个正式的答案。事实上,这对我不起作用,但我正在努力提高numpy的水平,为了回答你的问题,我一分钟前看了numpy的文档。有一个名为
choose()
的ndarray方法。这对你有用吗
train\u spam.choose([random.randrange(3065)for i in range(1000)]
感谢您的帮助,我得到了这个错误:TypeError:无法根据规则“safe”将数组数据从dtype('float64')转换为dtype('int64')。不过
0
参数是不必要的
np.random.randint(train\u spam.shape[0],size=1000)
也会这样做。
a = np.array([[1,2,3],[2,3,4], [5,6,7]])
rng = np.random.default_rng()
rng.choice(a, 2)