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的目的。