将 numpy 迭代器转换为字典



我正在通过以下代码使用 Numpy 遍历两个数组

for position, force in np.nditer([positions,forces]):
    print("(x,y) = (%f,%f)" % (position, force))

但现在我需要它是一本字典

{
  1: "(x,y) = (2,3)",
  2: "(x,y) = (7,4)",
  3: "(x,y) = (1,2)",
  4: "(x,y) = (9,8)",
}

您可以在字典理解中的enumerate的帮助下创建字典:

{i: "(x,y) = (%f,%f)" % t for i, t in enumerate(np.nditer([positions,forces]), 1)}

http://docs.scipy.org/doc/numpy/reference/arrays.nditer.html#tracking-an-index-or-multi-index nditer确实有跟踪索引的方法,但您失去了一些便利。 它必须在c样式while循环中使用:

d={}
it=np.nditer([a,b],flags=['c_index'])
while not it.finished:
     d[it.index]='%s, %s'%it[:]
    it.iternext()

因此,将迭代器包装在 enumerate 中可能更容易记住和使用。 或者只是跟踪自己的计数器(cnt=0.... cnt += 1 )。

最新更新