Python 类型错误:'&燃气轮机';在';numpy.ndarray和#x27;和';str';尝试将数组与列表进行比较时
我试图获取一个包含浮点数和字符串、浮点数和字符串等的列表(例如[0.13,“dog”、14.0、“cat”、…)* 首先,有可能吗? 其次,我使用的数据来自一个包含三列29行的数组(coord_数组)和一个字符串列表(名称) 我编写的代码旨在创建包含6个元素*的两个列表(maxcoord和mincoord),如上所述 我写的代码是:Python 类型错误:'&燃气轮机';在';numpy.ndarray和#x27;和';str';尝试将数组与列表进行比较时,python,arrays,python-3.x,string,Python,Arrays,Python 3.x,String,我试图获取一个包含浮点数和字符串、浮点数和字符串等的列表(例如[0.13,“dog”、14.0、“cat”、…)* 首先,有可能吗? 其次,我使用的数据来自一个包含三列29行的数组(coord_数组)和一个字符串列表(名称) 我编写的代码旨在创建包含6个元素*的两个列表(maxcoord和mincoord),如上所述 我写的代码是: maxcoord = [0,0,0,0,0,0] mincoord = [0,0,0,0,0,0] for i in range(num_atoms): i
maxcoord = [0,0,0,0,0,0]
mincoord = [0,0,0,0,0,0]
for i in range(num_atoms):
if(coord_array[i][0] > maxcoord[0]):
maxcoord[0] = coord_array[i][0]
maxcoord[1] = names[i]
if(coord_array[i][0] < mincoord[0]):
mincoord[0] = coord_array[i][0]
mincoord[1] = names[i]
if(coord_array[i][1] > maxcoord[2]):
maxcoord[2] = coord_array[i][1]
maxcoord[2] = names[i]
if(coord_array[i][1] < mincoord[2]):
mincoord[2] = coord_array[i][1]
mincoord[2] = names[i]
if(coord_array[i][2] > maxcoord[4]):
maxcoord[4] = coord_array[i][2]
maxcoord[5] = names[i]
if(coord_array[i][2] < mincoord[4]):
mincoord[4] = coord_array[i][2]
mincoord[5] = names[i]
maxcoord=[0,0,0,0,0]
mincoord=[0,0,0,0,0,0]
对于范围内的i(原子数):
如果(coord_数组[i][0]>maxcoord[0]):
maxcoord[0]=coord_数组[i][0]
maxcoord[1]=名称[i]
if(coord_数组[i][0]maxcoord[2]):
maxcoord[2]=coord_数组[i][1]
maxcoord[2]=名称[i]
如果(coord_数组[i][1]maxcoord[4]):
maxcoord[4]=coord_数组[i][2]
maxcoord[5]=名称[i]
if(coord_数组[i][2]
我已经导入了sys和numpy(作为np)
我得到的输出是
Traceback (most recent call last):
File "./pract1_lesson", line 66, in <module>
if(coord_array[i][1] > maxcoord[2]):
TypeError: '>' not supported between instances of 'numpy.ndarray' and 'str'
回溯(最近一次呼叫最后一次):
文件“/pract1_lesson”,第66行,在
如果(coord_数组[i][1]>maxcoord[2]):
TypeError:'numpy.ndarray'和'str'的实例之间不支持'>'
自从<代码> Max COORD(2)< /COD>应该包含0(零),我不理解为什么它认为它是一个“string”,尽管在那个位置上有一个整数。 我如何解决这个问题?我是在尝试做一些不可能的事情吗?
提前感谢您的帮助 你的问题不完整。但根据守则:
if(coord_array[i][1] > maxcoord[2]):
maxcoord[2] = coord_array[i][1]
maxcoord[2] = names[i]
同一个“变量”有两个连续的赋值,这使得第一个赋值完全无用。所以我猜这是一个“打字错误”
遵循另一个if
s中的模式,您可能打算:
if(coord_array[i][1] > maxcoord[2]):
maxcoord[2] = coord_array[i][1]
maxcoord[3] = names[i]
我想指出的是,使用异构列表会让人困惑,而且维护起来太痛苦。最好存储一个包含某些类或字典实例的列表,其中每个类或字典都包含(一个float和一个str)。显示我们可以运行的完整代码段。您的当前缺少变量,我们无法尝试。请尝试将
maxcoord
数组强制转换为float/int,即maxcoord。as_type(int)
好的,我修改了错误,现在,对于maxcoord,我得到了正确的结果,而对于mincoord,它不工作,并且未触及列表(0,0,0,0,0)。我没有按照你的建议去做,只是因为这样写花了我几个小时,哈哈,我必须在周一之前提交项目,我不想浪费时间去改变它,我只需要让它工作并打印coordmax e coordmin的结果,而且决不能再重复使用它们。因此,对我来说,让我更有效率或更实用并不是必要的。不过,感谢您的建议和帮助!:)