gpt4 book ai didi

python - 从字典数组中提取数字数组

转载 作者:行者123 更新时间:2023-12-01 00:53:40 39 4
gpt4 key购买 nike

我有以下 2x2 字典数组:

a = np.array([[{'x_id':0, 'y_id':0},{'x_id':1, 'y_id':1}],[{'x_id':2, 'y_id':0},{'x_id':3, 'y_id':1}]])

我想获取与键 'x_id'[[0, 1], [2, 3]] 的值相对应的 2x2 数字数组,即:

0  1
2 3

除了双for循环之外还有其他方法吗?即:

numbers = [[a[i,j]['x_id'] for j in range(2)] for i in range(2)]

最佳答案

如果您在代码中谈论显式 for 循环,则可以展平您的数组并使用单个 for 循环完成工作,然后 reshape 你的最终数组

numbers = np.array([i['x_id'] for i in a.flatten()]).reshape(a.shape)
# array([[0, 1],
# [2, 3]])

另一种解决方案是在展平数组上使用itemgetter作为

import operator
numbers = np.array(list(map(operator.itemgetter('x_id'), a.flatten()))).reshape(a.shape)

性能:两种方法花费的时间相似

%timeit np.array([i['x_id'] for i in a.flatten()]).reshape(a.shape)
# 4.16 µs ± 676 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

%timeit np.array(list(map(operator.itemgetter('x_id'), a.flatten()))).reshape(a.shape)
# 4.9 µs ± 1.26 µs per loop (mean ± std. dev. of 7 runs, 100000 loops each)

关于python - 从字典数组中提取数字数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56386717/

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