2014-10-31 81 views
0

有人可以幫助我嗎?TypeError:SetPoint參數1:預期的整數參數,得到浮點數

pts.InsertPoint(fl[i+1][j+1][k+1], xx[0][i+1], yy[0][j+1], zz[0][k+1]) 
TypeError: InsertPoint argument 1: integer argument expected, got float 

fl應該是浮動的,我有從真實世界的實驗數組,我不能將值更改爲int。

這是一個與InsertPoint相關的問題,它只是取int嗎?有人可以幫我修復它嗎?另外,我沒有Python的經驗,從來沒有寫過程序,這是我正在使用的第一個程序,我對一箇舊程序進行了更改,以使其爲我的目的工作,但無法計算出我做錯了什麼

謝謝:)

回答

0

問題不在於fl是否由漂浮物組成。問題是InsertPoint的方法簽名期望每個值都是一個int。

從Python文檔:

exception TypeError: 

Raised when an operation or function is applied to an object of inappropriate type. The associated value is a string giving details about the type mismatch.

此信息是錯誤的字樣清晰可您粘貼 - 它既有的異常類型(TypeError),並通過它拋出的對象(InsertPoint )。如果你不小心在你的數組索引器中包含一個浮點數,那麼這個異常就會被InsertPoint以外的其他東西拋出。

未來,您應該根據您的異常錯誤對Google進行一些研究。我不會告訴你任何你在那找不到的東西。

如果你仍然想使用InsertPoints,你有兩個選擇:

  1. 可以使用(INT)轉換爲截斷編輯:第一你的參數整,整數值(1.2截斷1,2.67到2,等等),就像這樣:

    int(fl[i+1][j+1][k+1])

  2. 你可以做#1,但是反過來值最接近的整數值,如下圖所示(請記住,你會需要導入數學):

    int(Math.Round(fl[i+1][j+1][k+1]))

+0

你知道一些類似於InsertPoint的東西,它可以做同樣的工作,但是可以和浮點數一起使用嗎? – aregak 2014-10-31 21:38:11

+0

問題是我需要漂浮物。我不一定需要使用插入點,儘管 – aregak 2014-10-31 21:41:33

+1

@aregak這是一個vtk類型?你可以指向我存在的類型的特定命名空間/庫嗎?另外,您可以嘗試用幾個InsertNextPoint()調用替換InsertPoints()嗎? – furkle 2014-10-31 21:42:45

-1

嘗試每個包裹或自己的價值觀int(),像這樣:

pts.InsertPoint(int(fl[i+1][j+1][k+1]), int(xx[0][i+1]), int(yy[0][j+1]), int(zz[0][k+1])) 
0

如果你看一下vtkpoints的文件::在insertPoint你會看到預期的論據是( ID,X,Y,Z)。當你需要在位置id處設置點的值時,使用這種方法(這就是爲什麼它必須是整數)。 http://www.vtk.org/doc/nightly/html/classvtkPoints.html#ab7f990c73fb291737abe4203994ce2a2

從python shell中,您也可以檢查help(pts.InsertPoint) - 但由於這些是被包裝的對象有時幫助似乎有點模糊。

方法InsertNextPoint只需要x,y,z,並且可以像您一樣使用。它不需要明確的ID,因爲它只會在你的末尾

專門針對python,你可能也對vtk.util.numpy_support感興趣,它使numpy和vtk元素之間的轉換更容易(你可以轉換你的從numpy指向一個vtkdoublearray,然後用setdata方法將它賦值給一個vtkpoints)

相關問題