rei*_*eer 6 python arrays numpy
给定一个 numpy 2D 点数组,也就是第 3 维大小等于 2 的 3D 数组,如何获得所有点的最小 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]
Run Code Online (Sandbox Code Playgroud)
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]
Run Code Online (Sandbox Code Playgroud)
现在有没有一种简单的方法来获得数据所有点的最小 x 和 y 坐标?我玩弄了 amin 和不同的轴值,但没有任何效果。
澄清:
我的数组随着时间的推移存储来自不同机器人的位置。第一个维度是时间,第二个维度是机器人的索引。第三维是机器人在给定时间内的 x 或 y。
由于我想将它们的路径绘制到像素,我需要对我的数据进行归一化,以便这些点尽可能靠近原点而不会变成负数。我认为从每一点减去 [minx,miny] 对我来说就可以了。
小智 8
alko 的回答对我不起作用,所以这就是我所做的:
import numpy as np
array = np.arange(15).reshape(5,3)
x,y = np.unravel_index(np.argmin(array),array.shape)
Run Code Online (Sandbox Code Playgroud)
似乎您需要连续的 min 沿轴。对于您的第一个示例:
>>> np.min(np.min(data, axis=1), axis=0)
array([ 0, 1])
Run Code Online (Sandbox Code Playgroud)
对于第二个:
>>> np.min(np.min(data, axis=1), axis=0)
array([0, 3])
Run Code Online (Sandbox Code Playgroud)
正如@Jamie,s 所指出的,可以声明相同的表达式(在 numpy 中比 1.7 更旧)
>>> np.min(data, axis=(1, 0))
array([0, 3])
Run Code Online (Sandbox Code Playgroud)