gpt4 book ai didi

python - 根据另一个数组的索引列表从一个数组中获取元素

转载 作者:太空宇宙 更新时间:2023-11-04 04:55:20 24 4
gpt4 key购买 nike

我有一个像这样的 2 numpy 数组

a = [array([ 0.1,  0.1,  0.1]), array([ 0.2,  0.2,  0.2])]

b = [0 0 0 1]

我想要的是这样的--

c = [[0.1,  0.1,  0.1],[0.1,  0.1,  0.1],[0.1,  0.1,  0.1],[0.2, 0.2, 0.2]]

即a 的元素基于 b 的索引。

有没有一种方法可以使用 numpy 和矢量化来实现这一点,即无需循环值?

最佳答案

如果将 a 存储为二维 numpy 数组:

>>> a = np.array([[0.1, 0.1, 0.1], [0.2, 0.2, 0.2]])
# result: array([[ 0.1, 0.1, 0.1],
# [ 0.2, 0.2, 0.2]])

甚至通过 a = np.array(a)a 转换为 numpy 数组,然后您可以使用列表 b 根据需要访问元素:

>>> b = [0,0,0,1]
>>> print(a[b])
array([[ 0.1, 0.1, 0.1],
[ 0.1, 0.1, 0.1],
[ 0.1, 0.1, 0.1],
[ 0.2, 0.2, 0.2]])

如果你需要一个 list 作为输出,那么使用 numpy 数组的 tolist() 方法:

>>> (np.asarray(a)[b]).tolist()
[[0.1, 0.1, 0.1], [0.1, 0.1, 0.1], [0.1, 0.1, 0.1], [0.2, 0.2, 0.2]]

关于python - 根据另一个数组的索引列表从一个数组中获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47193914/

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