在这段python代码中,大于号的含义是什么?

时间:2017-05-11 04:26:47

标签: python c++ numpy syntax notation

我正在尝试用C ++实现一个受限制的boltzmann机器。我使用这个Python代码作为指南: https://github.com/echen/restricted-boltzmann-machines/blob/master/rbm.py

这是第37行:

pos_hidden_states = pos_hidden_probs > np.random.rand(num_examples, self.num_hidden + 1)

pos_hidden_​​states和pos_hidden_​​probs都是二维矩阵,C ++中的vector<vector<double>>类型,num_examples和num_hidden都是整数。

有人能解释一下大于号的含义吗?

4 个答案:

答案 0 :(得分:7)

numpy中将numpy翻译成C ++,很多抽象概率可能并不容易。无论如何,它作为矢量化比较,因为np.random.rand(...)返回np.ndarray,如果pos_hidden_probs是标量或np.ndarray,它将表现为矢量化(即元素)方式:

>>> rand_array = np.random.rand(2, 2)
>>> rand_array
array([[ 0.1807726 ,  0.67617382],
       [ 0.84396805,  0.04450794]])
>>> 0.5 > rand_array
array([[ True, False],
       [False,  True]], dtype=bool)
>>>

如果pos_hidden_probs是某种np.ndarray,则行为可能会受到broadcasting的影响,这是numpy的一项功能:

>>> np.array([0.5, 0.5]) > rand_array
array([[ True, False],
       [False,  True]], dtype=bool)
>>> np.array([0.5, .9]) > rand_array
array([[ True,  True],
       [False,  True]], dtype=bool)
>>>

答案 1 :(得分:3)

>运算符在NumPy中以元素方式工作,例如

np.array([[1,2],[3,4]]) > np.array([[2,2],[2,2]])

为您提供np.array([[False,False],[True,True]])

NumPy也有broadcasting,它为不同维度的数组之间的比较提供了意义。

答案 2 :(得分:2)

&gt;将隐藏的prob(在这种情况下为浮点数)与2d numpy数组中的每个项进行比较,并返回2d布尔值数组:

>>> import numpy as np
>>> np.random.randn(3,2)array([[-0.74615339, -1.22667606],
       [ 0.22729787,  0.72070398],
       [-1.06876014,  0.06367189]])
>>> 5.  >  np.random.randn(3,2)
array([[ True,  True],
       [ True,  True],
       [ True,  True]], dtype=bool)
>>> 

答案 3 :(得分:1)

由于运算符重载,>运算符几乎可以执行任何操作 - 它只是调用对象上的__gt__特殊方法。但是,如果没有任何其他信息,我希望它只是评估&#34;大于&#34;并返回bool值。