Python 对数组进行分类

Python 对数组进行分类,python,numpy,Python,Numpy,例如,我有以下列表: A = [(1, 2.5), (2, 5.0), (3, 7.5), (4, 10.0)] 我还有另一个列表,其中有以下条目: B = [2.5, 7.5, 12.5] 我想要的是Python中的一个程序,如果a中每个元组的第二个元素,即2.5、5.0、7.5和10.0,可以在B中找到,它将创建另一个如下所示的变量: C = [(1, 2.5), (3, 7.5)] 其中,它删除A中第二个元素不在B中的其他元组。我试着这样编码: A = [(1, 2.5), (2,

例如,我有以下列表:

A = [(1, 2.5), (2, 5.0), (3, 7.5), (4, 10.0)]
我还有另一个列表,其中有以下条目:

B = [2.5, 7.5, 12.5]
我想要的是Python中的一个程序,如果
a
中每个元组的第二个元素,即
2.5
5.0
7.5
10.0
,可以在
B
中找到,它将创建另一个如下所示的变量:

C = [(1, 2.5), (3, 7.5)]
其中,它删除
A
中第二个元素不在
B
中的其他元组。我试着这样编码:

A = [(1, 2.5), (2, 5.0), (3, 7.5), (4, 10.0)]
D = np.asarray(list(A))
E = []
if D[:, 1] in B:
    E = np.append(E,D)
else:
    pass
但我有一个错误:

ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()


为什么不简单地说:

>>> A = [(1,2.5), (2,5.0), (3,7.5), (4,10.0)]
>>> B = [2.5, 7,5, 12.5]
>>> C = [a for a in A if a[1] in B]
>>> C
[(1, 2.5), (3, 7.5)]

为什么不简单地说:

>>> A = [(1,2.5), (2,5.0), (3,7.5), (4,10.0)]
>>> B = [2.5, 7,5, 12.5]
>>> C = [a for a in A if a[1] in B]
>>> C
[(1, 2.5), (3, 7.5)]
您可以使用来确定
A[:,1]
中的哪些值也在
B
中:

In [104]: A = np.array([(1,2.5), (2,5.0), (3,7.5), (4,10.0)])

In [105]: B = [2.5, 7.5, 12.5]

In [106]: mask = np.in1d(A[:, 1], B)

In [107]: mask
Out[107]: array([ True, False,  True, False], dtype=bool)

In [108]: A[mask]
Out[108]: 
array([[ 1. ,  2.5],
       [ 3. ,  7.5]])
您可以使用来确定
A[:,1]
中的哪些值也在
B
中:

In [104]: A = np.array([(1,2.5), (2,5.0), (3,7.5), (4,10.0)])

In [105]: B = [2.5, 7.5, 12.5]

In [106]: mask = np.in1d(A[:, 1], B)

In [107]: mask
Out[107]: array([ True, False,  True, False], dtype=bool)

In [108]: A[mask]
Out[108]: 
array([[ 1. ,  2.5],
       [ 3. ,  7.5]])

如果B:中的D[:,1]是
B
中的
7,5
7.5
的排版,B也从未定义过
,如果D[:,1]是
B中的
7,5
7.5
的排版,B也从未定义过
如果D[:,1]在B:
中,因为在本机Python中进行迭代(无论是理解还是循环)通常会破坏Numpy的目的。因为在本机Python中进行迭代(无论是理解还是循环)通常会破坏Numpy的目的。