我知道这个话题真的很难理解,但我不知道如何用一句话来形容我的问题...... T^T如何定义一个元素属于其他类别?
这是我正在尝试做的。
我有一组一维点在三个类别。
A = [[0,1], [0,2], [0,3], [1,1], [2,1], [3,2], [3,3], [4,2], [4,3], [5,3], [6,3]]
第一个数字是x坐标和第二数量中的每个[]
标签和欲切割点插入到每对相邻点[X1,L1],[X2,L2的],如果其中至少一个具有多于一种标签,L2属于与L1不同的类别。
例如,
[0,1], [0,2], [0,3]
他们都在X = 0,但有三种标签
[1,1]
只属于一个类别,所以我想补充一个切点在0中间X = 0.5和1.
3 x
2 x
1 x 1
x
0-x-1-
但像
[1,1] and [2,1]
他们都只有一个和相同的标签,没有必要在这里添加一个切点。
所以结果应该是 [0.5, 2.5, 3.5, 4.5]
,也许看起来像这样
3 x x 3 x 3 x 3 3 <--Label
2 x x 2 x 2 x <--Label
1 x 1 1 x x x <--Label
x x x x
-0-x-1---2-x-3-x-4-x-5---6--- <--X-axis
0.5 2.5 3.5 4.5 <--Cut points
我想写遗嘱的代码看起来是这样的形式
A = [[0,1], [0,2], [0,3], [1,1], [2,1], [3,2], [3,3], [4,2], [4,3], [5,3], [6,3]]
X = []
for a in A:
X.append(a[0])
X = sorted(list(set(X)))
labels = [[1], [2], [3]]
group = []
for i in range(len(labels)):
group.append([])
for a in A:
for i in range(3):
if a[1] in labels[i]:
group[i].append(a[0])
cutpoints = []
for i, x in enumerate(X):
for j in range(len(group)):
if x in group[j] and (X[i+1] in group[ other than j ]):
cutpoints.append((x+X[i+1])/2)
但我停留在部分“其他比j“ 在这种情况下,只有3类,所以也许我可以手动做,但我正在寻找一个更聪明的方式来做到这一点,所以我不需要每次遇到具有不同数量类别的新数据。
有什么功能可以用来做“j以外的操作”吗?
如有任何意见或问题,我们将不胜感激。 预先感谢T^T
顺便说一下,您有一个整数除法问题。 – bpachev