Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TypeError:设置点参数1:应为整数参数,得到浮点值_Python_Vtk - Fatal编程技术网

Python TypeError:设置点参数1:应为整数参数,得到浮点值

Python TypeError:设置点参数1:应为整数参数,得到浮点值,python,vtk,Python,Vtk,有人能帮我吗 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方面的经验,从未编写过程序,

有人能帮我吗

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方面的经验,从未编写过程序,这是我使用的第一个程序,我对一个旧程序进行了修改,以使其能够正常工作,但我不知道我做错了什么


谢谢:

问题不在于fl是否由浮点数组成。问题是InsertPoint的方法签名期望每个值都是int

从python文档中:

exception TypeError:
当操作或函数应用于不适当类型的对象时引发。关联的值是一个字符串,提供有关类型不匹配的详细信息

这个信息在您粘贴的错误消息中很明显是可用的——它既有异常类型TypeError,也有引发它的InsertPoint对象。如果您意外地在数组索引器中包含了一个浮点,那么异常可能是由InsertPoint以外的其他对象引发的

将来,你应该根据你的异常错误在Google上做一些研究。我不会告诉你在那里找不到的任何事情

如果仍要使用InsertPoints,则有两个选项:

您可以使用int cast来截断编辑:第一个参数为整数,整数值1.2截断为1,2.67截断为2,等等,如下所示:

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]))
intfl[i+1][j+1][k+1]

您可以执行1,但将值舍入为最接近的整数值,如下所示。请记住,您需要导入数学:

intMath.Roundfl[i+1][j+1][k+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]))

如果查看vtkpoints::InsertPoint的文档,您将看到预期的参数是id、x、y、z。当您必须在位置id处设置点的值时,可以使用此方法,这就是为什么它必须是整数

在python shell中,您还可以检查helppts.InsertPoint,但由于这些是包装对象,因此帮助有时显得有点模糊

相反,InsertNextPoint方法只需要x、y、z,并且可以像您现在这样使用。它不需要一个显式的id,因为它只会在最后显示您的点


特别是对于python,您可能还对vtk.util.numpy_支持感兴趣,它使numpy和vtk元素之间的转换更容易您可以将点从numpy转换为vtkdoublearray,然后使用setdata方法将其分配给vtkpoints

您知道类似于InsertPoint的东西吗,这将做同样的工作,但将确定浮动?问题是,我需要有浮动。我不一定需要使用insertpoint,though@aregak这是vtk类型吗?您能告诉我存在该类型的特定名称空间/库吗?另外,您可以尝试用几个InsertNextPoint调用替换InsertPoints吗?是的,这是vtk类型!我不认为InsertNextPoint在我的例子中是有效的,我的数组是81x81x61 sizeNote,只有第一个参数应该是int,其他三个是float。