我想获取包含 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/