在python3中的循环内创建新数组变量
使用此当前代码,读取4G_pathA.FMT文件,然后在一个循环中进行处理,在该循环中测量一对地理坐标之间的距离。这些值随后存储在数组dist()中。 但是,我想将这些值存储在13个不同的数组中,每个数组对应于paths[]数组中的每个路径,因此dist_pathA、dist_pathB等以及RSRP_pathA、RSRP_pathB等。 如何使用for循环中的x值作为名称在循环内创建新数组?我试过了在python3中的循环内创建新数组变量,python,arrays,python-3.x,Python,Arrays,Python 3.x,使用此当前代码,读取4G_pathA.FMT文件,然后在一个循环中进行处理,在该循环中测量一对地理坐标之间的距离。这些值随后存储在数组dist()中。 但是,我想将这些值存储在13个不同的数组中,每个数组对应于paths[]数组中的每个路径,因此dist_pathA、dist_pathB等以及RSRP_pathA、RSRP_pathB等。 如何使用for循环中的x值作为名称在循环内创建新数组?我试过了 r = 6371e3 # metres latBS = 41.178210 lonBS = -
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]'])
但是没有用
Cheers在循环中创建/填充的数组中存储数据的示例:
dist_{}.format(x)=[]
从集合导入defaultdict
数组\u dict=defaultdict(列表)
对于范围(10)内的i:
数组\u dict[i].append()
循环结束后,每个键都代表数组名称和数组内容的值不要这样做。相反,创建一个字典,其中路径是键,数组是值。这更容易使用。您正在尝试将字符串处理函数应用于标识符名称。有些语言(众所周知的是Tcl)经常使用间接变量命名,但在Python中不推荐使用这种模式,也不像您编写的那样简单。正如蒂姆·罗伯茨所建议的那样,你真正想要的是一本字典或一份清单。
from collections import defaultdict
arrays_dict = defaultdict(list)
for i in range(10):
arrays_dict[i].append(<something>)