创建一个包含空numpy数组的defaultdict

14 投票
2 回答
14830 浏览
提问于 2025-04-18 15:11

我在想有没有更聪明的方法来创建一个默认字典,来自collections库。这个字典的默认值应该是一个空的numpy数组。

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

import collections
d = collections.defaultdict(lambda: numpy.ndarray(0))

不过,我在想有没有可能跳过这个lambda表达式,直接创建这个字典。比如说:

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

2 个回答

3

如果你事先知道数组的大小,还有另一种方法可以使用:

new_dict = defaultdict(lambda: numpy.zeros(array_size))
24

你可以用 functools.partial() 来代替 lambda 函数:

from collections import defaultdict
from functools import partial

defaultdict(partial(numpy.ndarray, 0))

总是 需要一个可调用的对象来使用 defaultdict(),而 numpy.ndarray() 总是 需要至少一个参数,所以你不能直接把 numpy.ndarray 传进去。

撰写回答