计算数组的每个连续元素之间的距离

时间:2017-09-05 15:34:04

标签: python numpy

假设我有以下数字:

array([[-3 ,  3],
   [ 2, -1],
   [-4, -4],
   [-4, -4],
   [ 0,  3],
   [-3, -2],
   [-4, -2]])

然后我想计算列中每对连续数字之间距离的范数,即

    array([[norm(2--3), norm(-1-3)],
   [norm(-4-2), norm(-4--1)],
   [norm(-4--4), norm(-4--4)],
   [norm(0--4), norm(3--4)],
   [norm(-3-0), norm(-2-3)],
   [norm(-4--3)-3, norm(-2--2)])

然后我想取每列的平均值。

在Python中有一种快速有效的方法吗?我一直在努力但到目前为止没有运气。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

这将完成这项工作:

np.mean(np.absolute(a[1:]-a[:-1]),0)

返回

array([ 3.16666667,  3.16666667])

说明:

首先,np.absolute(a[1:]-a[:-1])返回

array([[5, 4],
       [6, 3],
       [0, 0],
       [4, 7],
       [3, 5],
       [1, 0]])

这是差异绝对值的数组(我假设通过数字的范数表示绝对值)。然后将np.meanaxis=0一起使用将返回每列的平均值。