首页 > 解决方案 > 使用python从给定矩阵中随机选择特征

问题描述

我有一个使用 python 创建的 6 x 6 矩阵。从矩阵中包含的 36 个值中,我想从矩阵中选择非零的任意 10 个值(它应该随机选择值,而不是通过指定位置),并且应该在最后打印所选的 10 个值。请帮我写python中的代码

 import numpy as np
 from numpy import random
 #import Dataframe.sample as df 
 rows = 6
 cols = 6 
 a = np.matrix(np.random.randint(220,376, size=(rows,cols)))
 print (a)

标签: pythonmatrixrandom

解决方案


考虑一个 6x6 矩阵:

x = np.arange(36).reshape(6,6)

然后你可以在折叠成一维的矩阵上使用random.choice() ( flatten()

np.random.choice(x.flatten(), 10, replace=False)

得到10个随机元素。


对于 a np.matrix,就像你的情况一样,它会改变,我不知道直接的方法。你可以做的如下。您选择索引。

selected = np.random.choice(a.shape[0]*a.shape[1], 10, replace=False)
# e.g., array([[25, 19,  5,  4, 32, 33, 13,  1,  2, 16]]) 
# a.shape[0]*a.shape[1]=36 in your case

最后,您获取与 flatten() 矩阵上的选定索引相对应的元素

a.flatten()[0,selected]

编辑

还有一种基于numpy.matrix.A1的直接方法

a = np.matrix(np.random.randint(220,376, size=(6,6)))
elements = np.random.choice(a.A1, 10, replace=False)

推荐阅读