从包含字典键的另一个ndarray构造一个值的ndarray

tac*_*yon 2 python dictionary numpy python-3.x numpy-ndarray

我有一个包含按特定顺序排列的字典键的ndarray.我想创建另一个包含相应键值的ndarray.必须保持订单.显而易见的方法是逐个元素迭代包含键的数组,但问题是没有办法事先知道数组的形状.

是否有可能压平关键字的ndarray并迭代它以生成平坦的数值,并最终在不损害订单的情况下解开它?

 mydict = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':6}
 input_pattern = np.array([['a', 'f'], ['b', 'e'], ['c', 'd']])
 expected_output = np.array([[1, 6], [2, 5], [3, 4]])
Run Code Online (Sandbox Code Playgroud)

注意:在上面的示例中,模式数组是2D,但可能并非总是如此.它也可能不包含字典的所有键.

jpp*_*jpp 5

你可以用np.vectorizedict.get:

d = np.vectorize(mydict.get)

res = d(input_pattern)

print(res)

array([[1, 6],
       [2, 5],
       [3, 4]])
Run Code Online (Sandbox Code Playgroud)