Python 使用空numpy数组创建defaultdict
我想知道是否有更聪明的方法从集合中创建默认dict。 dict的默认值应为空numpy ndarray 到目前为止,我的最佳结果是: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
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数组的大小是固定的;请参阅。