尽我所能解释我的问题,这是我最好的:
我试图在第一步中确认先前创建的数组的某个位置是否为0,并使用字符串替换该0。之后,我想确认该相同位置是否再次为0,如果不是,则将前一个字符串与新的字符串连接起来。
为了更好地理解,我将显示一段代码:
room1=np.array([["chair","table","book","computer","person"],[0,0,0,0,0]])
上面是数组(或矩阵)
if int(room1[1,k])==0:
room1[1,k]=tipoObjF[1] #tipoObjF[1] being the string I want to replace the 0
else:
room1[1,k]=room1[1,k]+tipoObjF[1]
在这里,我要像之前提到的那样:检查某个位置是否为0,如果为0,则将其替换为String。否则,只需连接两个字符串即可。
我在运行它时出现以下错误:
ValueError: invalid literal for int() with base10: 'chair1'
我希望我能够正确解释我的问题。 该错误出现在正在使用ROS的项目中,并且chair1是替换0的第一件事,并且应该加入else语句中,从而使其成为Chair1Chair1达到预期的结果。
在此先感谢您愿意提供帮助的人
编辑: 最后,数组应如下所示:
room1=np.array([["chair","table","book","computer","person"],["chair1chair",0,0,0,0]])
答案 0 :(得分:1)
如果在元素已交换为非整数字符串之后尝试将room[1,k]
强制转换为int
,则无法调用int()
不再。例如,int("chair1chair")
会引发您看到的错误。
由于值可能是int
或string
,因此您可以先比较以下字符串值:
if str(room[1,k]) == "0": ...
这样做允许str(0) == "0"
返回True
,但也允许str("hello") == "0"
返回False
。