Arrays 如何使用欧几里德距离访问最相似行上的特定项?

Arrays 如何使用欧几里德距离访问最相似行上的特定项?,arrays,python-3.x,numpy,Arrays,Python 3.x,Numpy,我有一个数组列表: L = ( array1, array2, array3, array4... ) 这个列表是从一个Pandas数据帧开始创建的,因此,旧数据帧的每一行现在都是列表中的一个数组 使用欧几里德距离,我想: 遍历所有数组 仅选择第二项包含在10和100之间的数组 给定一个数组arr1,选择最相似的一个(比如arr4) 将arr4中的2nd项替换为arr1 要将其可视化: 遍历所有数组 L = ([87, 30, 45, 99],

我有一个数组列表:

L = ( array1,
      array2,
      array3,
      array4... )
这个列表是从一个Pandas数据帧开始创建的,因此,旧数据帧的每一行现在都是列表中的一个数组

使用欧几里德距离,我想:

  • 遍历所有数组
  • 仅选择第二项包含在
    10
    100
    之间的数组
  • 给定一个数组
    arr1
    ,选择最相似的一个(比如
    arr4
  • arr4
    中的2nd项替换为
    arr1
  • 要将其可视化:

  • 遍历所有数组

     L = ([87, 30,  45,  99],
         [11,  21,  31,  41],
         [560, 47,  85,  328],
         [167, 32,  98,  379] )
    
  • 仅选择第二项包含在
    10
    100

    L = ([87,  30,  45,  99],
         [11,  21,  31,  41],
         [560, 47,  85,  328],
         [85,  33,  43,  97] )
    
  • 给定一个数组
    arr1
    ,选择最相似的一个(比如
    arr4

    现在让我们呼吁简化:

    p=30(数组1,第2个元素)

    X=32(数组4,第2个元素)

  • 更换
    arr1
    2档位置(X)内
    arr4
    (p)中的2档项目

  • 对于任何有用的提示,许多人都表示感谢和感谢

    将numpy导入为np
    L=np.数组([
    [87, 30,  45,  99],
    [11,  21,  31,  41],
    [560, 47,  85,  328],
    [167, 32,  98,  379]
    ])
    
    对于第2点,您可以使用
    np.where
    ,它返回一个condition.nonzero()数组,该数组指示condition在哪里为True。然后你可以把这个数组作为索引

    
    结果=L[np.其中((L[:,1]>10)和(L[:,1]
    
    array 1 = ( [87, 30,  45,  99] )
    
    array 4 = ( [85, 32,  43,  97] )
    
    array 1 = ([87, 32, 45, 99])