Numpy defaultdict和空数组
在本文中,我们将介绍如何使用Numpy中的defaultdict和创建一个空的Numpy数组。
阅读更多:Numpy 教程
什么是defaultdict
默认的Python字典不具备自动创建缺失键的能力。当我们试图访问一个不存在的键时,会产生KeyError。有时这是我们不希望看到的行为,因为在某些情况下,我们希望默认键不存在时,能够被创建并设置为特定的值。这就是defaultdict的作用。
defaultdict本质上就是一个Python字典,并有一个额外的默认工厂参数。当用户试图访问一个不存在的键时,这个工厂函数会被调用来创建空的值,并将其分配给这个键。这个工厂函数的默认值是None。
下面是使用defaultdict创建一个计数器的示例代码:
from collections import defaultdict
# 定义一个工厂函数
def mydefault():
return 0
# 创建一个defaultdict
my_dict = defaultdict(mydefault)
# 增加一些计数
my_dict['apple'] += 1
my_dict['banana'] += 2
my_dict['orange'] += 3
在上面的代码中,当我们去访问my_dict
中不存在的键时,会调用mydefault
函数来创建一个新的值。在这个例子中,mydefault
返回了整数0
,所以当我们增加计数时,它们会从零开始。
如何使用Numpy数组
NumPy是Python中的一种科学计算包,它提供了高效的数组操作和运算。使用NumPy数组,我们可以执行矩阵乘法、求和、平均值等各种常见的数组操作。
Numpy中一种最常见的用法是创建一个要么为空,要么包含特定元素类型的ndarray。
import numpy as np
empty_array = np.empty((3,3))
zeros_array = np.zeros((3,3))
ones_array = np.ones((3,3))
在上面的例子中,我们分别创建了一个大小为3×3的空的ndarray、元素均为0的ndarray、元素均为1的ndarray。
如何创建一个empty Numpy数组
我们可以使用np.empty()方法创建一个空Numpy数组,这个数组的元素值是未定义的,因此它可能包含任何值。
import numpy as np
empty_array = np.empty((3,3))
print(empty_array)
运行上面的代码,我们得到下面的输出:
[[4.67163267e-310 0.00000000e+000 6.95335506e-309]
[4.45038681e-308 9.44594746e-296 -1.14364234e+067]
[ 1.48219694e+242 6.07699486e-067 8.26656538e+165]]
在这个例子中,我们创建了一个大小为3×3的空的Numpy数组。请注意,数组中的元素是未定义的,因此它们可能包含任何值。
如何创建一个defaultdict Numpy数组
要创建一个defaultdict Numpy数组,我们需要使用一个lambda函数,这个函数将返回一个新的空Numpy数组:
from collections import defaultdict
import numpy as np
# 创建一个初始化为空的lambda函数
empty_array = lambda: np.empty((0, 3))
# 创建defaultdict
my_dict = defaultdict(empty_array)
# 像普通字典一样使用
my_dict['apple'] = np.array([[1,2,3], [4,5,6], [7,8,9]])
my_dict['orange'] = np.array([[9,8,7], [6,5,4], [3,2,1]])
# 在dict中增加值
my_dict['banana'] = np.array([[10,10,10]])
my_dict['apple'] = np.vstack((my_dict['apple'], np.array([[11,12,13]])))
在上面的代码中,我们使用了lambda函数来创建一个空结果数组。然后创建了一个defaultdict,然后向其中添加一些值。注意,我们必须使用vstack()函数来将一个更新后的数组(如’my_dict’中的’apple’)与一个新的数组(如'[[11,12,13]]’)合并。这使得我们可以在数组中添加新的行。
总结
在本文中,我们介绍了如何使用Numpy中的defaultdict和创建一个空的Numpy数组。我们使用lambda函数来创建一个默认的空的Numpy数组,并展示了如何使用defaultdict来创建一个自动创建缺失键的Python字典。我们还展示了如何使用np.empty()函数来创建一个空的Numpy数组。