Python 类型错误:'&燃气轮机';在';numpy.ndarray和#x27;和';str';尝试将数组与列表进行比较时

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

我试图获取一个包含浮点数和字符串、浮点数和字符串等的列表(例如[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):
    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的结果,而且决不能再重复使用它们。因此,对我来说,让我更有效率或更实用并不是必要的。不过,感谢您的建议和帮助!:)