我使用python 3.6。我有一个numpy数组让我们说a.It是这种格式
array(['0', '1', '2', ..., '3304686', '3304687', '3304688'],
dtype='<U7')
我有另一本词典b = {1:&#39; 012&#39;,2:&#39; 023&#39;,3:&#39; 045&#39;,... 3304688: &#39; 01288&#39;}
我希望通过提供a的值作为b的键来检索b的每个值并将其存储在另一个numpy数组中。我打算以这种方式尝试
z_array = np.array([])
for i in range(a.shape[0]):
z=b[i]
z_array=np.append(z_array,z)
但是看一下a的形状,我觉得它会花费很多时间。 能否请你建议一些时间有效的替代方法?
答案 0 :(得分:1)
您可以使用np.frompyfunc
,请注意这将创建一个对象数组。
b = {str(i): i**3 for i in range(10**7)}
a = [str(i) for i in range(10**7)]
c = np.frompyfunc(b.__getitem__, 1, 1)(a)
或
c = np.frompyfunc(b.get, 1, 1)(a)
以None
表示缺少密钥。
在包含10,000,000个项目的示例中,尽可能多的查找只需要一两秒钟。 (创建a
和b
需要更长时间)