相关疑难解决方法(0)

将Numpy数组转换为稀疏字典的最快方法?

我有兴趣尽快将numpy数组转换为稀疏字典.让我详细说明:

鉴于阵列:

numpy.array([12,0,0,0,3,0,0,1])
Run Code Online (Sandbox Code Playgroud)

我希望出版字典:

{0:12, 4:3, 7:1}
Run Code Online (Sandbox Code Playgroud)

如您所见,我们只是将序列类型转换为从非零值到其值的显式映射.

为了使这更有趣,我提供以下测试工具来尝试替代方案:

from timeit import Timer

if __name__ == "__main__":
  s = "import numpy; from itertools import izip; from numpy import nonzero, flatnonzero; vector =         numpy.random.poisson(0.1, size=10000);"

  ms = [ "f = flatnonzero(vector); dict( zip( f, vector[f] ) )"
             , "f = flatnonzero(vector); dict( izip( f, vector[f] ) )"
             , "f = nonzero(vector); dict( izip( f[0], vector[f] ) )"
             , "n = vector > 0; i = numpy.arange(len(vector))[n]; v = vector[n]; dict(izip(i,v))"
             , …
Run Code Online (Sandbox Code Playgroud)

python performance numpy

5
推荐指数
1
解决办法
4566
查看次数

将 2D numpy.ndarray 转换为嵌套字典

假设我有以下内容numpy.ndarray

array([[50,  0,  0],
      [ 0,  3, 47],
      [ 0, 36, 14]])
Run Code Online (Sandbox Code Playgroud)

如何将其转换为这种形式的字典:

{0: {0: 50}, 1: {1: 3, 2: 47}, 2: {1: 36, 2: 14}}
Run Code Online (Sandbox Code Playgroud)

这个问题类似于python 2d array to dict,但无论我多么努力地尝试,我都无法找到类似于那里的答案的解决方案。

python dictionary numpy type-conversion multidimensional-array

3
推荐指数
1
解决办法
1726
查看次数