就python编程而言,我是一个新手。目前我正在尝试按照我的要求理解一个python程序。在完成程序的过程中,我发现了这个令人困惑的声明:
circleMap = [np.average(map[:, 0]), np.average(map[:, 1]), np.average(map[:, 2])]
map= globalMap[self.yPos, self.xPos:(self.xPos+self.width)]
所以我的问题是,
circleMap = [np.average(map[:, 0]), np.average(map[:, 1]), np.average(map[:, 2])]
做什么?我在网上查了一下,但找不到任何有用的链接。
任何帮助将不胜感激。
提前全部谢谢。
答案 0 :(得分:0)
map
这里是一个numpy数组, 至少 2维; circleMap
是一个内置列表,因为np.average
这里返回一个浮点数; circleMap = [np.average(map[:, 0]), np.average(map[:, 1]), np.average(map[:, 2])]
创建一个python内置列表,存储每列map
的平均值。 注意:,因为map
是一个python内置函数,所以在实践中不应该将它变为变量名。
“gMap包含什么?gMap= globalMap[self.yPos, self.xPos:(self.xPos+self.width)]
此语句是否用于初始化gMap?”
是的,它会创建变量gMap
,它是globalMap
的子数组。它在globalMap
的行self.yPos
,列self.xPos
到self.xPos+self.width
。
答案 1 :(得分:0)
1)map
确实是一个二维数组([:,0]
中的逗号表示至少有2个维度)。这里,:
表示所有元素。这很令人困惑,因为map
也是python中的一个函数,所以这当然不是好习惯。我们可以推断它至少有3个变量。
2)的确,circleMap
将是一个包含3个元素的列表。
3)map
可以说有3个变量。代码所做的是存储列表中三个变量中每个变量的平均值。您可以分别访问circleMap[0]
,circleMap[1]
和circleMap[2]
。
np.average
与np.mean
非常相似,后者也可以选择加权。
事实上,编码器使用np.average(map[:,3], 1)
会更容易,这会产生完全相同的结果(仅存储在一个numpy数组中,但具有与当前{{1}相同的维度})。编码器没有这样做的事实可能意味着我假设的三件事:
circleMap
,最终可能会使用2d数组)要解决最后一部分,请考虑以下示例:
np.average(map[:,3], 1)
最好是为自己玩它。查看对象的内容。 yPos = 1
xPos = 1
width = 2
globalMap = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]]) # 3x4 array
globalMap[yPos, xPos:(xPos+width)] # this will evaluate to:
globalMap[1, 1:3] # note that python is zero indexed so that the result will be
array([6,7])
将为您提供数组的维度。
另一方面注意到,令人困惑的是,编码人员使用globalMap.shape
来表示该行(通常用y
表示)