我试图在模式识别中对公式进行编码,但我找不到合适的功能来完成这项工作。问题是我有一个二元邻接矩阵A (M*N)
,并希望为每个单元格分配值1
或0
。每个单元格的固定概率P
为1
,否则为零。我在python中搜索关于采样的方法,似乎大多数方法只支持列表中的几个元素而不考虑概率。我真的需要这方面的帮助,任何想法都表示赞赏。
答案 0 :(得分:1)
你可以使用
A = (P > numpy.random.rand(4, 5)).astype(int)
P
是你的概率矩阵。
为确保概率正确,您可以使用
进行测试P = numpy.ones((4, 5)) * 0.2
S = numpy.zeros((4, 5))
for i in range(100000):
S += (P > numpy.random.rand(4, 5)).astype(int)
print S # each element should be approximately 20000
print S.mean() # the average should be approximately 20000, too
答案 1 :(得分:0)
让我们说你的邻接概率矩阵如下:
# Create your matrix
matrix = np.random.randint(0, 10, (3, 3))/10.
# Returns :
array([[ 0. , 0.4, 0.2],
[ 0.9, 0.7, 0.4],
[ 0.1, 0. , 0.5]])
# Now you can use np.where
threshold = 0.5
np.where(matrix<threshold, 0, 1) # you can set your threshold as you like.
# Here set to 0.5
# Returns :
array([[0, 0, 0],
[1, 1, 0],
[0, 0, 1]])