Python 使用空numpy数组创建defaultdict

Python 使用空numpy数组创建defaultdict,python,numpy,collections,defaultdict,Python,Numpy,Collections,Defaultdict,我想知道是否有更聪明的方法从集合中创建默认dict。 dict的默认值应为空numpy ndarray 到目前为止,我的最佳结果是: import collections d = collections.defaultdict(lambda: numpy.ndarray(0)) 然而,我想知道是否有可能跳过lambda术语,以更直接的方式创建dict。比如: d = collections.defaultdict(numpy.ndarray(0)) # <- Nice and shor

我想知道是否有更聪明的方法从集合中创建默认dict。 dict的默认值应为空numpy ndarray

到目前为止,我的最佳结果是:

import collections
d = collections.defaultdict(lambda: numpy.ndarray(0))
然而,我想知道是否有可能跳过lambda术语,以更直接的方式创建dict。比如:

d = collections.defaultdict(numpy.ndarray(0))  # <- Nice and short - but not callable

d=collections.defaultdict(numpy.ndarray(0))\

from collections import defaultdict
from functools import partial

defaultdict(partial(numpy.ndarray, 0))

您始终需要为
defaultdict()
调用一个可调用的,并且
numpy.ndarray()
始终至少需要一个参数,因此您不能在此处传入
numpy.ndarray

为什么要将ndarray与defaultdict一起使用?每次都必须创建一个新数组,才能将一个项插入到支持追加操作的现有键、更好的使用列表中。
np.concat()
可用于累积数组。如果阵列大而少,这可能会更有效。因此,我喜欢上面提出的解决方案。累加:
base=defaultdict(lambda:np.ndarray(0));base=np.concatenate((base,new_array)
我是Numpy新手。Ashwini说“每次都必须创建一个新数组才能将项插入现有键。最好使用支持追加操作的列表”?@Phillip是的,它们是正确的。Numpy数组的大小是固定的;请参阅。