Arrays Python3 Numpy np.where错误

Arrays Python3 Numpy np.where错误,arrays,python-3.x,list,numpy,Arrays,Python 3.x,List,Numpy,我有两张这样的清单 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 = [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。其中(a使用列表理解:

In [161]: x = [None,[1, 15, 175, 20],
     ...:     [150, 175, 18, 20],
     ...:     [150, 175, 18],
     ...:     [192, 150, 177]]
     ...:     
要从
x
(和
y
?)中删除的项目索引。我使用
x[1://code>跳过需要额外测试的
None

In [163]: [(i,j) for i,v1 in enumerate(x[1:]) for j,v2 in enumerate(v1) if v2<30]
Out[163]: [(0, 0), (0, 1), (0, 3), (1, 2), (1, 3), (2, 2)]
我们可以使用
Out[163]
值从
y
中删除项目。或者我们可以一起迭代
x
y
zip(x,y)
,等等)

如果列表理解变得太混乱,它们可以被重写为循环,也可能是函数


对于这种不规则的嵌套列表结构,我看不出使用
numpy
有任何意义。对象数据类型数组基本上是列表(但没有有用的列表方法).

是否保留嵌套的列表结构?Numpy不能很好地处理锯齿状数组,或者将列表和整数混合作为数组元素。
x.dtype
是对象。没有一个可以与30相比,列表也不能。忘记在这里使用数组。请使用
x
的列表版本。非常感谢。您节省了这么多是我的时间。我会学习zip并试着去做!
In [161]: x = [None,[1, 15, 175, 20],
     ...:     [150, 175, 18, 20],
     ...:     [150, 175, 18],
     ...:     [192, 150, 177]]
     ...:     
In [163]: [(i,j) for i,v1 in enumerate(x[1:]) for j,v2 in enumerate(v1) if v2<30]
Out[163]: [(0, 0), (0, 1), (0, 3), (1, 2), (1, 3), (2, 2)]
In [164]: [[v2 for v2 in v1 if v2>=30] for v1 in x[1:]]
Out[164]: [[175], [150, 175], [150, 175], [192, 150, 177]]