假设我有一个变量列表如下:
.gridgallery figure img {
width: 100% !important;
max-width:100%;
opacity: 0.95;
display:block;
}
我想要的是获得一个值向量,它给出了列表中变量存在的真值。
所以,如果有另一个名单说
v = [('d',0),('i',0),('g',0)]
该输出应为
g = [('g',0)]
P.S。
我尝试过使用op(v,g) = [False, False, True]
,但它提供了以下内容:
np.in1d
答案 0 :(得分:1)
在python中,您可以使用如下列表解析:
>>> v=[('d', 0), ('i', 0), ('g', 0)]
>>> g=[('t', 0), ('g', 0),('d',0)]
>>> [i in g for i in v]
[True, False, True]
答案 1 :(得分:1)
您可以将这些列表转换为numpy数组,然后像这样使用np.in1d
-
import numpy as np
# Convert to numpy arrays
v_arr = np.array(v)
g_arr = np.array(g)
# Slice the first & second columns to get string & numeric parts.
# Use in1d to get matches between first columns of those two arrays;
# repeat for the second columns.
string_part = np.in1d(v_arr[:,0],g_arr[:,0])
numeric_part = np.in1d(v_arr[:,1],g_arr[:,1])
# Perform boolean AND to get the final boolean output
out = string_part & numeric_part
示例运行 -
In [157]: v_arr
Out[157]:
array([['d', '0'],
['i', '0'],
['g', '0']],
dtype='<U1')
In [158]: g_arr
Out[158]:
array([['g', '1']],
dtype='<U1')
In [159]: string_part = np.in1d(v_arr[:,0],g_arr[:,0])
In [160]: string_part
Out[160]: array([False, False, True], dtype=bool)
In [161]: numeric_part = np.in1d(v_arr[:,1],g_arr[:,1])
In [162]: numeric_part
Out[162]: array([False, False, False], dtype=bool)
In [163]: string_part & numeric_part
Out[163]: array([False, False, False], dtype=bool)