我有字典
mydict = {'jon': 12, 'alex': 17, 'jane': 13}
我想创建一个包含12, 17, 13
值的np.array
,但按另一个数组排序
sortby = np.array(['jon', 'jane', 'alex'])
这应该产生输出为
sorted_array = np.array([12, 13, 17])
有什么方法比循环遍历sortby
数组更有效,如下所示?
sorted_array = []
for vals in sortby:
sorted_array.append(mydict[vals])
return np.array(sorted_array)
使用列表理解,
In [100]: np.array([mydict[i] for i in sortby])
Out[100]: array([12, 13, 17])
编辑:
处决时间,为穆罕默德和摩西的讨论明确
In [119]: def test_loop():
sorted_array = []
for vals in sortby:
sorted_array.append(mydict[vals])
return np.array(sorted_array)
.....:
In [120]: def test_list_compres():
return np.array([mydict[i] for i in sortby])
.....:
In [121]: %timeit test_list_compres
10000000 loops, best of 3: 20 ns per loop
In [122]: %timeit test_loop
10000000 loops, best of 3: 21.3 ns per loop
In [123]: %timeit test_list_compres
10000000 loops, best of 3: 20.1 ns per loop
In [124]: %timeit test_loop
10000000 loops, best of 3: 21.9 ns per loop
这是一个微小的差异,但它将产生重大变化,巨大的条目。