gpt4 book ai didi

python - 从 Numpy Ndarray 构建字典和列表

转载 作者:行者123 更新时间:2023-12-04 10:49:19 30 4
gpt4 key购买 nike

我想使用 2D ndarray 为数百万个数据创建一个字典。

寻找一种pythonic和高性能的方式来实现这一目标

我的数组:

格式:[id、origin_lat、origin_lon、dest_lat、dest_lon、距离]

my_array = np.array([[245, 32.45,63.89,72.1,63.57,123.45],
[246, 61.73,42.71,75.54,-81.69,16.32]])

预期输出:
my_dict = {
245: {
'origin_lat_lon': {
'lat': 32.45,
'lon': 63.89
},
'dest_lat_lon': {
'lat': 72.1,
'lon': 63.57
},
'distance': 123.45
},
246: {
'origin_lat_lon': {
'lat': 61.73,
'lon': 42.71
},
'dest_lat_lon': {
'lat': 75.54,
'lon': -81.69
},
'distance': 16.32
}
}

my_list = [{'lat': 32.45, 'lon': 63.89},
{'lat': 72.1, 'lon': 63.57},
{'lat': 61.73, 'lon': 42.71},
{'lat': 75.54, 'lon': -81.69}]

我的代码:
my_dict = dict()
my_list = list()

for arr in my_array:
origin_lat_lon = {'lat': arr[1],
'lon': arr[2]}
dest_lat_lon = {'lat': arr[3],
'lon': arr[4]}
value = {'origin_lat_lon':origin_lat_lon,'dest_lat_lon':dest_lat_lon,'distance':arr[5]}
my_dict[int(arr[0])]=value
my_list.append(origin_lat_lon)
my_list.append(dest_lat_lon)

最佳答案

这是使用 dict 的一种方法与 zipslicing .

例如:

import numpy as np

my_array = np.array([[245, 32.45,63.89,72.1,63.57,123.45],[246, 61.73,42.71,75.54,-81.69,16.32]])
keys = ['origin_lat', 'origin_lon', 'dest_lat','dest_lon', 'distance']
keys_2 = ['lat', 'lon']

my_dict = {}
my_list = []

for arr in my_array:
key, vals = arr[0], arr[1:]
my_dict[int(key)] = dict(zip(keys, vals))
my_list.extend([[dict(zip(keys_2, vals[0:2]))],[dict(zip(keys_2, vals[2:4]))]])

print(my_dict)
print(my_list)

输出:
{245: {'dest_lat': 72.1,
'dest_lon': 63.57,
'distance': 123.45,
'origin_lat': 32.45,
'origin_lon': 63.89},
246: {'dest_lat': 75.54,
'dest_lon': -81.69,
'distance': 16.32,
'origin_lat': 61.73,
'origin_lon': 42.71}}
[[{'lat': 32.45, 'lon': 63.89}],
[{'lat': 72.1, 'lon': 63.57}],
[{'lat': 61.73, 'lon': 42.71}],
[{'lat': 75.54, 'lon': -81.69}]]

关于python - 从 Numpy Ndarray 构建字典和列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59559185/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com