将字符串(索引)列表转换为Numpy Array

时间:2017-05-02 19:35:43

标签: python arrays pandas numpy

我有一个列表,其中每个值只显示一个,并且我有另一个列表,其中包含所需的标记化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]

有没有有效的方法可以做到这一点?

2 个答案:

答案 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`'"