【发布时间】:2018-08-04 01:20:37
【问题描述】:
我有 2 个这样的列表
x = [None,[1, 15, 175, 20],
[150, 175, 18, 20],
[150, 175, 18],
[192, 150, 177],...]
y = [None,[12, 43, 55, 231],
[243, 334, 44, 12],
[656, 145, 138],
[12, 150, 177],
[150, 177, 188],...]
现在我想擦除低于 30 的 x 值和与擦除的 x 值相对应的 y 值。 (例如,x[1] 和 y[1] 中的 (x,y) = (1,12))
为了做到这一点,我尝试在 Numpy 中使用 np.where。
我使用 np.array 将 x 和 y 列表转换为数组并为 x 得到了这个
array([None, list([11]), list([12, 11]), ..., list([12, 13]),list([13, 13]), list([13, 15])], dtype=object)
然后我用 np.where(a
TypeError: '>' not supported between instances of 'NoneType' and 'int'
我认为第一个列表中的 None 值是问题,所以我实现了
np.where(a[1:]>30)
然后我得到了 TypeError:“list”和“int”的实例之间不支持“>”
我是初学者,想知道是什么导致了这个错误。
【问题讨论】:
-
是否要保留嵌套列表结构?
-
Numpy 不能很好地处理像这样的锯齿状数组,或者将列表和整数混合作为数组元素。
-
x.dtype是对象。没有一个不能与 30 相比,列表也不能。忘记在这里使用数组。使用x的列表版本。
标签: arrays python-3.x list numpy