【问题标题】:How to delete the element in a list which is duplicated for linear representation in python?如何删除列表中为python中的线性表示重复的元素?
【发布时间】:2019-06-10 02:40:59
【问题描述】:

https://imgur.com/a/0lFwssy

我想画一个这样的进化图,[1,2,3,4]是点注解:

1 :(x=1,y=2)
2 :(x=2,y=3)
3 :(x=3,y=5)
4 :(x=4,y=6)

连接是这样的:

a = [1,1,2,3] *Starting Point
b = [2,4,4,4] *Ending Point

而且因为point1和point2都连接到point4,我不希望point到point4的连接,因为point1首先进化到point2。 所以我想得到

https://imgur.com/a/asAUlHQ

c = [1,2,3]
d = [2,4,4]

我尝试使用zip 编写for循环但失败了。

如何在python中获取cd

【问题讨论】:

  • 抱歉不明白你是如何计算从1, 2删除1, 42, 4的需要
  • 因为3连接到412连接到3,所以我不希望12连接到4,我只想要122334

标签: python-3.x list numpy replace


【解决方案1】:

据我了解,您似乎正在为边缘位于 (a_i,b_i) 的图形寻找 minimum spanning tree。你可以这样做:

A = sp.sparse.csr_matrix((len(a),len(a)),dtype='bool')
A[a,b] = 1
c,d = sp.sparse.csgraph.minimum_spanning_tree(A).nonzero()

请注意,最小生成树不是唯一的。

【讨论】:

  • 谢谢!但实际上我想要的是连接到ba 的最大权重,最小生成树的结果与我想要的结果不匹配。有什么算法可以解决我的问题吗?
  • 也许如果你发布另一个例子,你在找什么会更清楚。例如,为什么要删除 1,4 和 2,4 而不是 1,4 和 3,4 或 1,2 和 4,3?是因为在您的列表中排在第一位吗?即,如果您重新排序 ab,您的结果是否相同?
  • @wayne64001 你是什么意思'重量',如果这些只是无向图中的边,你如何确定重量。顺便说一句,可能有多个最小生成树。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-02
  • 2020-11-02
相关资源
最近更新 更多