Python中的数组赋值

时间:2014-02-19 09:43:55

标签: python python-2.7 numpy

就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)]

所以我的问题是,

  1. 地图是二维数组吗?
  2. circleMap的维度是什么?
  3. circleMap = [np.average(map[:, 0]), np.average(map[:, 1]), np.average(map[:, 2])]做什么?
  4. 我在网上查了一下,但找不到任何有用的链接。

    任何帮助将不胜感激。

    提前全部谢谢。

2 个答案:

答案 0 :(得分:0)

  1. map这里是一个numpy数组, 至少 2维;
  2. circleMap是一个内置列表,因为np.average这里返回一个浮点数;
  3. circleMap = [np.average(map[:, 0]), np.average(map[:, 1]), np.average(map[:, 2])]创建一个python内置列表,存储每列map的平均值。
  4. 注意:,因为map是一个python内置函数,所以在实践中不应该将它变为变量名。

    编辑:

    “gMap包含什么?gMap= globalMap[self.yPos, self.xPos:(self.xPos+self.width)]此语句是否用于初始化gMap?”

    是的,它会创建变量gMap,它是globalMap的子数组。它在globalMap的行self.yPos,列self.xPosself.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.averagenp.mean非常相似,后者也可以选择加权。

事实上,编码器使用np.average(map[:,3], 1)会更容易,这会产生完全相同的结果(仅存储在一个numpy数组中,但具有与当前{{1}相同的维度})。编码器没有这样做的事实可能意味着我假设的三件事:

  • 编码员是初学者
  • 该变量有3个或更多维度(如果您使用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表示)