我有一个列表,其中每个值只显示一个,并且我有另一个列表,其中包含所需的标记化numpy数组的顺序。
例如:
sorted_values = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
a = ['a', 'c', 'g']
b = ['e']
我想将a和b(以高效率)转换为像这样的numpy数组:
at = [1,0,1,0,0,0,1]
bt = [0,0,0,0,1,0,0]
有没有有效的方法可以做到这一点?
答案 0 :(得分:3)
使用第一个数组已经排序的事实,我们可以使用np.searchsorted
来提高效率 -
at = np.zeros(len(sorted_values), dtype=int)
bt = at.copy()
at[np.searchsorted(sorted_values, a)] = 1
bt[np.searchsorted(sorted_values, b)] = 1
答案 1 :(得分:1)
您可以使用np.in1d(sorted_values, a).astype(int)
#array([1, 0, 1, 0, 0, 0, 1])
np.in1d(sorted_values, b).astype(int)
#array([0, 0, 0, 0, 1, 0, 0])
:
$sid = "`'0001`'"
$region = "`'CH`'"
$timestamp = "`'2017-04-20 14:14:00`'"
$dep = "`'17-04-2017`'"
$scenario = "`'A`'"
$milestone = "`'ASB_XREF_GLCC_LOAD_2ND_END_E`'"
$finishtime = "`'2017-04-18/11:11`'"