python - 在 NumPy 中将字典转换为数组

标签 python arrays dictionary numpy

我想获取包含 float 的字典,由整数索引并将其转换为 numpy.array 以用于 numpy 库。目前我正在手动将值转换为两个数组,一个用于原始索引,另一个用于值。当我查看 numpy.asarray 时,我的结论是我一定是做错了什么。谁能举例说明如何正确转换此类创作?不必使用 numpy.asarray,任何东西都可以。

from collections import defaultdict
foo = defaultdict( lambda: defaultdict(float) )
#Then "foo" is populated by several
#routines reading results from a DB
#
#As an example
foo[ 7104 ][ 3 ] = 4.5
foo[ 203 ][ 1 ] = 3.2
foo[ 2 ][ 1 ] = 2.7

我只想拥有一个多维 float 组,而不是一个字典数组。

编辑:

抱歉耽搁了。这是我用来创建第一个仅包含值的数组对象的代码:

storedArray = numpy.asarray( reduce( lambda x,y: x + y, (item.values() for item in storedMapping.values() ) ) )

我希望有人知道可以将 dict of dict 转换为数组的 Elixir 。

最佳答案

你可以这样计算N和M

N=max(foo)+1
M=max(max(x) for x in foo.values())+1
fooarray = numpy.zeros((N, M))
for key1, row in foo.iteritems():
   for key2, value in row.iteritems():
       fooarray[key1, key2] = value 

various options对于稀疏数组。例如,

import scipy.sparse
foosparse = scipy.sparse.lil_matrix((N, M))
for key1, row in foo.iteritems():
   for key2, value in row.iteritems():
       foosparse[(key1, key2)] = value 

关于python - 在 NumPy 中将字典转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2224620/

相关文章:

python - 将 NumPy 数组乘以标量

基于公共(public)键合并 2 个字典列表的 Pythonic 方法

python - 将列表初始化为循环内字典中的变量

python - 了解 python 字典的顺序

javascript - 从 Ajax 传递时数组值变为 null

Python Cherrypy : 500 ValueError: Page handlers MUST return bytes

javascript - 如何求和对象数组中相同字段的值?

c# - 串联字符串数组到 Dictionary<int, int>

Python:在元组列表中,找到下一个元组的值时检索前一个元组的键?

python - Pandas :每 N 列的总和