创建混合类型numpy结构化数组时定义布尔类型列触发语法错误如何解决
错误原因
你遇到的是Python语法错误,和布尔类型的标识?没有关系:
np.array()的第一个参数是结构化数组的元素列表,dtype是该函数的独立关键字参数,你错误地将dtype=写在了元素列表的方括号内部,导致语法解析失败。
修复方案
将元素列表和dtype参数分开即可,修正后的可运行代码如下:
import numpy as np # 元素列表放在第一个参数位置,dtype作为第二个关键字参数传入 x = np.array([(1, 2., 'Hello', True)], dtype=[('int', 'i4'),('float', 'f4'), ('string', 'S10'),('bool','?')]) print(x[0][3])
运行后输出结果为True,符合你设置第四列为布尔类型的需求。
额外说明
你代码里写的x[0][3] != x[0][3]只是单次比较运算,没有赋值操作的话不会修改数组内的原有值,如果需要修改布尔字段的值,需要手动赋值,比如:
x[0][3] = x[0][3] != x[0][3] print(x[0][3]) # 输出为False
内容的提问来源于stack exchange,提问作者RevolutionTek
相关产品推荐
相关产品推荐

