gpt4 book ai didi

python - 从具有坐标和值的字典构建 numpy 矩阵

转载 作者:行者123 更新时间:2023-12-01 09:09:51 26 4
gpt4 key购买 nike

大家好,我正在尝试从两个字典构建一个 Numpy 矩阵。第一个字典有一个整数键和一个 float64 值;另一个以坐标为键,整数值引用第一个字典的键。

目标是构建一个 Numpy 矩阵,坐标第二个字典中的键,并计算与整数键对应的浮点值。

dict_coord = {(0,0): 1, (0,1): 0, (0,2): 2,
(1,0): 1, (1,1): 1, (1,2): 0,
(2,0): 1, (2,1): 2, (2,2): 0}

dict_values = {0: 1.1232.., 1: 0.3523.., 2: -1.2421..}

result = np.array([[0.3523,1.1232,-1.2421],
[0.3523,0.3523,1.1232],
[0.3523,-1.2421,1.1232]])

我找到了最简单的解决方案,但是太慢了。我正在使用具有 300 x 784 个单元的矩阵,该算法大约需要 110 毫秒才能完成。

import numpy as np

def build_matrix(dict_index,dict_values):
mat_ret = np.zeros([300,784])
for k,v in dict_index.items():
mat_ret[k] = dict_values[v]
return mat_ret

如果您能帮我找到更好、更简单的解决方案来解决这个问题,我将不胜感激!

最佳答案

鉴于您的 dict_coord 键始终以这种方式排序,您可以简单地将两个字典转换为数组,然后将一个与另一个建立索引:

coord_array = np.asarray(list(dict_coord.values()))
values_array = np.asarray(list(dict_values.values()))

values_array[coord_array].reshape(3, 3)
# array([[ 0.3523, 1.1232, -1.2421],
# [ 0.3523, 0.3523, 1.1232],
# [ 0.3523, -1.2421, 1.1232]])

关于python - 从具有坐标和值的字典构建 numpy 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51744093/

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