Numpy 数组到 vtk 表

Var*_*lor 6 python numpy scipy vtk

我有以下问题。我有一个像这样的 numpy 数组:

arr = np.array([[   1. ,   1. ,   4.  ,  3.  ,  6. ,  12.  , -1.   , 1.],
 [   1. ,   2.  ,  2.,    2.,   10. ,   6. ,  -2. ,   2.],
 [   1. ,   2. ,   3. ,   4.  ,  4. ,  11. ,  -2.  ,  3.],
 [   1.  ,  2. ,   3. ,   6.,    8.   , 9.  ,  1. ,   4.],
 [   1.  ,  2. ,   6. ,   7.  ,  4.,   14.  ,  1. ,   5.],
 [   1.  ,  2. ,   7. ,   4. ,   2. ,  17. ,  -0.  ,  6.],
 [   1.  ,  3.  ,  2. ,   6. ,   7.  ,  3. ,  -1. ,   7.],
 [   1.  ,  3.  ,  4.  ,  1.  ,  3. ,  14. ,   0. ,   8.],
 [   1.  ,  3.  ,  5.  ,  5.   , 1. ,  16. ,  -1.  ,  9.],
 [   1.  ,  3.  ,  6. ,   2. ,   9. ,  19.  ,  1. ,  10.],
 [   1.  ,  4.  ,  3.  ,  1. ,   1.  ,  7. ,  -1.  , 11.],
 [   1.  ,  4.  ,  4. ,   5. ,   9. ,  10.  ,  2. ,  12.],
 [   1.  ,  4. ,   5.  ,  3. ,   6. ,  18. ,   0.  , 13.],
 [   1.  ,  4. ,   6.  ,  6. ,   5. ,   2. ,  -1. ,  14.],
 [   1.  ,  5. ,   1. ,   4. ,   3. ,   5. ,   1.  , 15.],
 [   2.  ,  1.  ,  2.  ,  7. ,   2. ,  19.  , -1. ,  16.],
 [   2.  ,  1.  ,  3. ,   2. ,   3. ,  16. ,  -2.  , 17.]])
Run Code Online (Sandbox Code Playgroud)

现在我想将其转换为 vtk 表。这可能吗?

此致!

Gui*_*ier 6

我认为可以使用以下方法来做到这一点:

# create the vtkTable object
tab = vtk.vtkTable()

# create a vtkDataArray with arr values
vtkarr = vtk.vtkDoubleArray()
vtkarr.SetNumberOfComponents(arr.shape[1])
vtkarr.SetNumberOfTuples(arr.shape[0])
vtkarr.SetVoidArray(arr, arr.size, 0)

# finally assign the values to the vtkTable
tab.GetRowData().AddArray(vtkarr)
Run Code Online (Sandbox Code Playgroud)

我试图避免不必要的值副本,这就是我使用SetVoidArray(). 所以基本上,它的第一个参数是数组本身,第二个是数组中元素的总数,最后一个告诉你是否希望vtkTable对象释放原始数据(在这种情况下,它会)。