Python 从点的2D numpy数组中获取最小x和y

Python 从点的2D numpy数组中获取最小x和y,python,arrays,numpy,Python,Arrays,Numpy,给定一个点的numpy 2D数组,即三维数组,其大小等于2,如何获得所有点的最小x和y坐标 示例: array([[[ 0, 77], [29, 12], [28, 71], [46, 17]], [[45, 76], [33, 82], [14, 17], [ 3, 18]], [[99, 40], [96, 3], [74, 60],

给定一个点的numpy 2D数组,即三维数组,其大小等于2,如何获得所有点的最小x和y坐标

示例:

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]
第一名:

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]
我编辑了我的原始示例,因为它是错误的

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坐标?我使用了阿明和不同的轴值,但没有任何效果

澄清:

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


因为我想画出它们到像素的路径,所以我需要规范化我的数据,以便点尽可能接近原点而不会变为负值。我认为从每个点减去[minx,miny]就可以了。

似乎你需要连续的min-alongaxis。第一个例子是:

minx = np.min(data[0])
miny = np.min(data[1])
>>> 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,s

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

您可以使用函数numpy.amin沿所需轴查找极小值。

alko的答案对我不适用,因此我做了以下工作:

import numpy as np

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

应该取数组切片的最小值。 假设第一个坐标是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

期望的输出是什么?在???后面的注释???。给定一个二维点矩阵,返回最小的x和y值。因此。。。基本上,
data
由两个2D数组组成,第一个表示所有x坐标,第二个表示所有y坐标,您想从每个数组中获取最小值吗?在这种情况下,我认为您的描述有点不一致:没有任何重要意义的是最后两个坐标,而不是前两个。我澄清了我想要的。@Reinder看起来不像您这样:)如果您将11,12替换为13,12,您希望得到什么输出?请提供更多点的样本数据,我很确定这不是问题所要求的。它需要每对的最小值,而结果与切片相同这一事实只是巧合;这是同一个函数(
np.amin是np.min
returs
True
),在numpy>1.7中,你可以执行
np.min(数据,axis=(0,1))
,并为自己留出一个中间数组。@Jaime刚刚考虑过尝试一下(从未尝试过),我最初的猜测是这个功能应该在pandas中实现:)不能在1.7中测试(手头有1.6和1.8),它在1.7中工作吗?不确定OP要求的是什么,但它回答了我的问题“如何在2D数组中找到最小元素的位置?”!