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

时间:2018-08-11 14:31:46

标签: python python-3.x numpy dictionary numpy-ndarray

我有一个ndarray,其中包含按特定顺序排列的字典键。我想创建另一个包含相应键值的ndarray。必须保持顺序。 一种明显的方法是逐个元素地迭代包含键的数组,但问题是无法事先知道数组的形状。

是否可以展平键的ndarray并对其进行迭代以生成平坦的ndarray值,并最终在不破坏顺序的情况下对其进行拆散?

.webp

N。 B .:在上面的示例中,图案数组是2D的,并非总是如此。另外,它可能不包含字典的所有键。

2 个答案:

答案 0 :(得分:5)

您可以将np.vectorizedict.get一起使用:

d = np.vectorize(mydict.get)

res = d(input_pattern)

print(res)

array([[1, 6],
       [2, 5],
       [3, 4]])

答案 1 :(得分:0)

  

问题是没有办法知道数组的形状   

我们可以尝试使用flat +列表理解+ reshape

svn cleanup --remove-unversioned

flat在数组外制作一维迭代器,稍后我们使用reshape恢复np.array([mydict[v] for v in input_pattern.flat]).reshape(input_pattern.shape) array([[1, 6], [2, 5], [3, 4]]) 的形状。