比例可変の式をコード化するには(このpaperの式1)?比例可変のコード
私のコードは次のとおりです。
import pandas as pd
l = pd.Series([1,2,3,4,5,6]) # any list of numbers
n = len(l)
if n > 1:
C = (n*(n-1))/2
D = []
for i in l.index:
for j in l.index:
if i != j:
zi_zj = [l[i],l[j]]
D.append(1-((min(zi_zj))/(max(zi_zj))))
PV = (1/C)*(np.sum(D))
else:
PV = 0
私はすべての数字と同じリストを置く場合は、予想通り、私は、例えば、算術シーケンスでリストを置く場合、私は、しかし、PV = 0
取得します[0,2,4,6,8]
,PV = 1.4
、およびPV
は0
との間にあるべきであり、算術配列はn
とは無関係にPV = 0.5
でなければならない。
私が試した別のオプションは以下のとおりであった:
l = pd.Series([1,2,3,4,5,6]) # any list of numbers
n = len(l)
if n > 1:
C = (n*(n-1))/2
i_s = set()
j_s = set()
D = []
for i in l.index:
for j in l.index:
if i != j:
if i not in i_s:
if j not in j_s:
zi_zj = [l[i],l[j]]
D.append(1-((min(zi_zj))/(max(zi_zj))))
i_s.add(i)
j_s.add(j)
PV = (1/C)*(np.sum(D))
else:
PV = 0
しかし、どちらか動作しませんでした。
また、一連の数値の比例可変性を計算するPythonの関数が見つかりませんでした。
コード内で私が間違っていることを見つけたり、内蔵機能があれば教えてください。