【发布时间】:2021-07-04 19:02:43
【问题描述】:
r = 6371e3 # metres
latBS = 41.178210
lonBS = -8.597820
φ1 = latBS * math.pi/180 # φ, λ in radians
l = 0
dist=[]
RSRP=[]
paths = ["pathA", "pathB", "pathC", "pathD0", "pathD1", "pathD2", "pathD3", "pathE", "pathF", "pathG0", "pathG1", "pathG2","pathG3"]
for x in paths:
logFile = pd.read_csv('export/4G_{}.FMT'.format(x), sep='\t')
logClean = logFile.dropna(subset=['All-Latitude', 'All-Longitude'])
dist.clear()
RSRP.clear()
for index, row in logClean.iterrows():
latMS=row['All-Latitude']
lonMS=row['All-Longitude']
φ2 = latMS * math.pi/180
Δφ = (latMS-latBS) * math.pi/180
Δλ = (lonMS-lonBS) * math.pi/180
a = math.sin(Δφ/2) * math.sin(Δφ/2) + math.cos(φ1) * math.cos(φ2) * math.sin(Δλ/2) * math.sin(Δλ/2)
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
d = r * c
dist.append(d) # in metres
RSRP.append(row['All-Serving Cell RSRP (dBm)[1]'])
使用当前代码,读取 4G_pathA.FMT 文件,然后在循环中处理一对地理坐标之间的距离。然后将这些值存储在数组 dist() 中。 但是,我想将这些值存储在 13 个不同的数组中,每个数组对应于 paths[] 数组中的每个路径,以便 dist_pathA、dist_pathB 等和 RSRP_pathA、RSRP_pathB 等 如何使用 for 循环中的 x 值作为名称在循环内创建一个新数组?我试过了
dist_{}.format(x)=[]
但无济于事。
干杯
【问题讨论】:
-
不要那样做。相反,创建一个字典,其中
path是键,数组是值。这更容易使用。 -
您正在尝试将字符串处理函数应用于标识符名称。一些语言(Tcl,臭名昭著)经常练习间接变量命名,但在 Python 中不推荐这种模式,也不像你写的那么简单。正如 Tim Roberts 所建议的,您真正想要的是字典或列表列表。
标签: python arrays python-3.x