[英]What is the built-in function A of numpy array.A?
最近,我讀了一行使我感到困惑的代碼:
pointsInCurrCluster = dataSet[nonzero(clusterAssment[:, 0].A == i)[0], :]
作者沒有為A
定義函數,所以我假設.A
是某種內置函數。 有誰知道它是什么?
好的,這樣我就認為它是返回nparray的scipy矩陣的參與者:
In [115]: mtx = sp.matrix([1,2,3])
In [116]: mtx.A
Out[116]: array([[1, 2, 3]])
A
是getA的 getter /捷徑。
在https://github.com/skodali1/python-machine-learning/blob/master/kmeansclusteringalgo.py中 (由Google搜索“ 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
屬性。 但是基於此代碼,我認為這不適用於此。
因此,在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] ,:]給出數據集中的所有那些元組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.