给定一个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]都会为我做到这一点。
答案 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来查找所需轴的最小值。