使用numpy实现二维列表与浮点数比较生成布尔列表报错求助
解决二维列表与浮点数比较生成布尔列表的问题
哦,这个问题我之前也碰到过!你的报错原因很明确——你现在的列表推导式只遍历了二维列表的外层,每个a其实是里面的子列表(比如[a1,a2,...]),拿列表和浮点数x用>=比较当然会触发类型错误啦,一维列表的时候a是单个元素,所以没问题。
下面给你两种可行的解决方案:
方案一:用Numpy的广播机制(推荐)
Numpy对数组的元素级操作支持非常友好,只需要先把二维列表转换成Numpy数组,然后直接和浮点数比较即可,Numpy会自动把x广播到每个元素进行比较:
import numpy as np # 示例二维列表 array = [[1.5, 2.5, 3.0], [0.8, 2.0, 1.9]] x = 2.0 # 先将二维列表转为numpy数组 np_array = np.array(array) # 直接执行元素级比较 b = np_array >= x print(b) # 输出: # [[False True True] # [False True False]]
方案二:纯Python嵌套列表推导式
如果不想依赖Numpy,你可以用嵌套的列表推导式,同时遍历外层列表和每个子列表里的元素:
# 示例二维列表 array = [[1.5, 2.5, 3.0], [0.8, 2.0, 1.9]] x = 2.0 # 嵌套推导式:先遍历子列表,再遍历子列表里的每个元素 b = [[elem >= x for elem in sublist] for sublist in array] print(b) # 输出:[[False, True, True], [False, True, False]]
这样就能得到你想要的二维布尔列表啦!
内容的提问来源于stack exchange,提问作者McMorgans
相关产品推荐
相关产品推荐

