2017-09-05 195 views
0

比方说,我有一个数字下面的数组:计算距离

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中这样做有一个快速而有效的方法吗?我一直在尝试,但迄今为止没有运气。

谢谢你的帮助!

+2

'2--3'在'norm(2--3)'中的含义是什么?你能写下实际的预期值吗? – Divakar

回答

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返回每列的平均值。

+0

感谢您的详细解答!有效! – tattybojangler

+1

不客气:) –