首页 > 解决方案 > 使用python在多行中查找交点

问题描述

我有一个包含多条线的图表。

点赞的数据格式

r[0] = [8,6,4,5,7,8]....
r[1] = [9,3,4,2,0,8]....
r[2] = [5,4,4,4,5,8]....
.
.
.

上面的点可以写成一个有多条线的图表。

例如,

r0 => [ [0,8], [1,6], [2,4], [3,5], [4,7] [5,8] ]....
r1 => [ [0,9], [1,3], [2,4], [3,2], [4,0] [5,8] ]....
r2 => [ [0,5], [1,4], [2,4], [3,4], [4,5] [5,8] ]....
.
.
.

在我使用函数之后find_intersection

我会得到交叉点的位置x

上述情况的位置是25

[x,y] 的“x”在+1每个r[n]点上都有规律

我知道使用 [:,n] 可以轻松编写,但我没有实现它。

我想用C 风格实现,例如 if-else、2-layer-loop ...

喜欢:

def find_intersection(data_2D):
  for i in range( len(data_2D) ):
    for j in range( len(data_2D[i]) ):
          #...some code...#
          #append position into positions
  return positions

我该怎么办?

标签: python

解决方案


我希望我正确理解了您的问题。决定你更喜欢哪个功能:

import numpy as np
data = [[8, 6, 4, 5, 7, 8],
        [9, 3, 4, 2, 0, 8],
        [5, 4, 4, 4, 5, 8]]

arr = np.array(data)

def get_intersection_np(arr: np.ndarray):
    means = np.mean(arr, axis=0)
    indices = np.all(means == arr, axis=0)
    return [i for i, bool_ in enumerate(indices) if bool_]


def get_intersection(arr: list):
    length_axis_one = len(arr[0])
    length_axis_zero = len(arr)
    indices = []
    for i in range(length_axis_one):
        all_equal = True
        last_value = None
        for j in range(length_axis_zero):
            value = arr[j][i]
            if last_value is not None:
                if last_value != value:
                    all_equal = False
            last_value = value
        if all_equal:
            indices.append(i)
    return indices



if __name__ == "__main__":
    indices_np = get_intersection_np(arr)
    print(indices_np)

    indices = get_intersection(data)
    print(indices)

推荐阅读