最近我正在从互联网上阅读节目。有一行编码令我困惑。 这是:
pointsInCurrCluster = dataSet[nonzero(clusterAssment[:, 0].A == i)[0], :]
作者没有为A
定义函数,所以我假设.A
是某种内置函数。
有谁知道它是什么?
由于
答案 0 :(得分:1)
好的,所以这样我觉得它是scipy矩阵返回ndarray的属性:
In [115]: mtx = sp.matrix([1,2,3])
In [116]: mtx.A
Out[116]: array([[1, 2, 3]])
A
是getA的获取者/快捷方式。
答案 1 :(得分:1)
在https://github.com/skodali1/python-machine-learning/blob/master/kmeansclusteringalgo.py (通过谷歌搜索' python clusterAssment'
找到from numpy import *
clusterAssment = matrix(zeros((m,2)))
...
ptsInClust = dataSet[nonzero(clusterAssment[:,0].A==cent)[0]]
在这种情况下,clusterAssment
是numpy.matrix
个对象。这就像numpy.ndarray
,除了它总是2d,并且像矩阵运算符一样有MATLAB。
clusterAssment.A
只需将矩阵转换为常规numpy.array
,可能会将其传递给numpy.nonzero
。
scipy.sparse
实现稀疏矩阵,它也具有此.A
属性。但根据此代码,我认为这不适用于此。
答案 2 :(得分:0)
答案 3 :(得分:0)
因此,在python中,您可以通过编写类似以下语句的语句来对数组的每个元素进行条件检查的结果:arr>3。对于数组arr = [[1,2,3], [3,4,5]]您将获得的输出为[[False,False,False],[False,True,True]]。现在说了,您需要一个数组来执行此操作。这就是.A在python中所做的事情,它为您提供矩阵的数组表示形式。现在,clusterAssment [:, 0] .A == i,为您针对值i对每一行和第一列提供条件检查答案。 nonzero(clusterAssment [:, 0] .A == i)将条件检查转换为满足条件的行和列的索引。此处有更多详细信息:nonZero。现在,由于clusterAssment是一个二维数组,因此nonzero(〜)[0]给出了将值i作为第一元素的行,以及dataSet [nonzero(clusterAssment [:, 0] .A == i)[0] ,:]给出数据集中的所有这些元组。