Allenfenqu/Tv_As.py

52 lines
1.6 KiB
Python

import numpy as np
import pandas as pd
def Tv_As():
subregion_adj = pd.read_csv('subregion_adj.csv',header = None)
yanlinks = pd.read_csv('yanlinks.csv')
unique_values, unique_indices = np.unique(yanlinks[:, 10], return_index=True)
Asb = 0 # 计算平均相似性
for i in unique_values:
wu = np.where(subregion_adj[int(i) - 1, :] == 1) # wu是元组
smrjj_divide_smrjj_ = 0
# 0726
wu_1 = wu[0]
for j in wu_1:
selected_values_list = [yanlinks[yanlinks[:, 10] == j + 1][:, 5]]
# 主区域邻接的一个区域速度均值与方差
selected_values = np.array(selected_values_list)
average = np.mean(selected_values)
variance = np.var(selected_values)
# 计算主区域的速度均值与方差
selected_values1 = yanlinks[yanlinks[:, 10] == i][:, 5]
average1 = np.mean(selected_values1)
variance1 = np.var(selected_values1)
smrjj = 2 * variance1 # jj情况下的smrjj
smrjj_ = variance + variance1 + (average - average1) ** 2
smrjj_divide_smrjj_one = smrjj / smrjj_
smrjj_divide_smrjj_ += smrjj_divide_smrjj_one
num_elements = len(wu[0]) # 计算分母NE
Asb_one = smrjj_divide_smrjj_ / num_elements
Asb += Asb_one
print('Asb=', Asb)
Tvb = 0
for i in unique_values:
selected_values = yanlinks[yanlinks[:, 10] == i][:, 5]
variance = np.var(selected_values)
Tvb += variance
print('Tvb=', Tvb)
return Asb, Tvb