从2D numpy数组得到最小x和y

时间:2014-01-05 20:13:53

标签: python arrays numpy

给定一个numpy二维点阵列,即第三维大小的3D阵列等于2,如何获得所有点上的最小x和y坐标?

示例:

首先

我编辑了我原来的例子,因为它错了。

data = np.array(
      [[[ 0,  1],
        [ 2,  3],
        [ 4,  5]],

       [[11, 12],
        [13, 14],
        [15, 16]]])

minx = 0 # data[0][0][0]
miny = 1 # data[0][0][1]

4 x 4 x 2:

第二

array([[[ 0, 77],
        [29, 12],
        [28, 71],
        [46, 17]],
       [[45, 76],
        [33, 82],
        [14, 17],
        [ 3, 18]],
       [[99, 40],
        [96,  3],
        [74, 60],
        [ 4, 57]],
       [[67, 57],
        [23, 81],
        [12, 12],
        [45, 98]]])

minx = 0 # data[0][0][0]
miny = 3 # data[2][1][1]

现在有一种简单的方法可以获得数据所有点的最小x和y坐标吗?我玩过amin和不同的轴值,但没有任何效果。

澄清:

我的阵列存储不同机器人的位置。第一维是时间,第二维是机器人的索引。然后第三个维度是给定时间内机器人的x或y。

由于我想将它们的路径绘制到像素,我需要对我的数据进行标准化,以使这些点尽可能接近原点,而不会产生负数。我认为从每一点减去[minx,miny]都会为我做到这一点。

5 个答案:

答案 0 :(得分:3)

alko的答案对我不起作用,所以这就是我所做的:

import numpy as np

array = np.arange(15).reshape(5,3)
x,y = np.unravel_index(np.argmin(array),array.shape)

答案 1 :(得分:2)

似乎你需要连续min minaxis。第一个例子:

>>> np.min(np.min(data, axis=1), axis=0)
array([ 0, 1])

第二个:

>>> np.min(np.min(data, axis=1), axis=0)
array([0, 3])

正如@Jamie指出的那样,可以说明相同的表达式(在1.7以上的numpy中)

>>> np.min(data, axis=(1, 0))
array([0, 3])

答案 2 :(得分:1)

你应该取一个数组的最小值。 假设第一个坐标是x,第二个坐标是y

minx = min(a[:,0])
miny = min(a[:,1])

>>>a=np.array([[1,2],[3,4],[5,6]])

>>> a
array([[1, 2],
   [3, 4],
   [5, 6]])

>>> min(a[:,0])
1
>>> max(a[:,0])
5
>>> max(a[:,1])
6

答案 3 :(得分:0)

minx = np.min(data[0])
miny = np.min(data[1])

答案 4 :(得分:0)

您可以使用函数numpy.amin来查找所需轴的最小值。