我有一个多维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]
然后追加,但我无法弄清楚如何正确追加,所以它看起来一样。任何帮助将不胜感激
答案 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)