我正在学习GANs(我是python的初学者),在前面的练习中我发现这部分代码我不理解。具体地说,我不明白为什么要用第9行的布尔值(Xk=X[Y==k]),原因如下
class BayesClassifier:
def fit(self, X, Y):
# assume classes are numbered 0...K-1
self.K = len(set(Y))
self.gaussians = []
self.p_y = np.zeros(self.K)
for k in range(self.K):
Xk = X[Y == k]
self.p_y[k] = len(Xk)
mean = Xk.mean(axis=0)
cov = np.cov(Xk.T)
g = {'m': mean, 'c': cov}
self.gaussians.append(g)
# normalize p(y)
self.p_y /= self.p_y.sum()
我觉得我不懂一些很基本的东西。你知道吗
您应该考虑到
X, Y, k
是NumPy数组,而不是标量,并且有些操作符对它们重载。尤其是==
和基于布尔的索引。==
将是元素比较,而不是整个数组比较。你知道吗了解其工作原理:
因此,
==
的结果是一个布尔数组。你知道吗当条件为
True
时,结果是一个包含从X
中选择的元素的数组因此
len(Xk)
将是X
和k
之间匹配元素的数量。你知道吗谢谢,阿特姆
你说得对。我从另一个渠道找到了另一个答案,这是:
相关问题 更多 >
编程相关推荐