使用python查找多条直线的交点

2024-10-17 21:53:26 发布

您现在位置: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'在每个r[n]点有一个规则的+1

我知道使用[:,n]可以很容易地编写,但我不能用它来实现

我想用C风格实现,比如if-else,2层循环

比如:

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

我该怎么办


Tags: 函数infordatalen图表rangefind
1条回答
网友
1楼 · 发布于 2024-10-17 21:53:26

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

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)

相关问题 更多 >