我知道這個話題真的很難理解,但我不知道如何用一句話來形容我的問題...... 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