2011-07-05 48 views
1

我需要輸入3,3D點作爲矩陣到這個函數中;所以我做了這樣一個元組:在Python中組織一個點的數組

initPoints = ([10,20,30],[5,15,25],[100,150,200]) 

,但我得到了以下錯誤:

AttributeError: 'tuple' object has no attribute 'shape' 

當我用一個列表同樣的事情發生。有任何想法嗎?什麼是'形狀'?我需要其他類型的數組嗎?我怎樣才能做到這一點? 感謝

編輯 - 我使用的功能是scipy.cluster.vq.kmeans2與MINIT =「矩陣」

+2

你可以指定你傳遞列表元組的功能?本身,像你所做的那樣聲明initPoint沒有任何問題。 – shelhamer

+0

聲音像函數一樣需要一個具有'shape'屬性的對象,而不僅僅是一個普通的元組。 – Santa

+4

這聽起來像你正在使用'numpy'。是對的嗎?如果是這樣,你應該知道numpy的數據類型與Python的內置類型完全不同。請編輯您的問題,以提供更多關於您想要做什麼的信息。 – senderle

回答

3

正如文檔scipy.cluster.vq.kmeans2所示,當您通過minit='matrix'時,k應該是numpy.ndarray。所以這樣做:

initPoints = numpy.array([[10,20,30],[5,15,25],[100,150,200]]) 
4

或許函數需要一個numpy的陣列或矩陣,而不是列出的元組?

http://docs.scipy.org/doc/numpy/reference/generated/numpy.array.html http://docs.scipy.org/doc/numpy/reference/generated/numpy.matrix.html

>>> import numpy 
>>> a = numpy.array(((1,2,3),(4,5,6))) 
>>> a.shape 
(2, 3) 

我們會需要更多的信息(如你是路過這)知道肯定。