gpt4 book ai didi

python - 如何在 python 中使用多个索引同时填充 numpy 数组

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

我有一个列表列表如下,在每个列表中,第一个元素有 indexes,第二个元素有每个索引的 value(注意:每个元素在该列表是一个 numpy 数组)。

mylist = [[[1 2 4 5], [0.1 0.7 0.7 0.7]], [[0 3], [0.2 0.4]]]

所以我的最终输出应该是这样的数组。

[0.2, 0.1, 0.7, 0.4, 0.7, 0.7]

我事先知道数组的长度。所以,在上面的数组中,长度是 6。

所以,我定义了一个numpy数组如下

import numpy as np
np.empty(6, dtype=object)

我想知道是否可以在每次迭代时同时填充 numpy 数组,而不用一个一个地填充每个索引。

如果需要,我很乐意提供更多详细信息。

最佳答案

如果我正确理解 mylist 的结构,这应该可以工作:

>>> idcs, vals = np.hstack(mylist)
>>> vals[idcs.argsort()]
array([0.2, 0.1, 0.7, 0.4, 0.7, 0.7])

编辑:正如 Paul Panzer 在评论中指出的那样,排序操作是不必要的。如果您不使用大数据集,我怀疑您会看到差异,但这是另一种应该是线性时间的方法:

>>> idcs, vals = np.hstack(mylist)
>>> out = np.zeros(len(idcs))
>>> out[idcs.astype(int)] = vals
>>> out
array([0.2, 0.1, 0.7, 0.4, 0.7, 0.7])

虽然我不太喜欢它,因为类型转换。

编辑:另一个,没有类型转换:

>>> idcs, vals = map(np.hstack, zip(*mylist))
>>> out = np.zeros(len(idcs))
>>> out[idcs] = vals
>>> out
array([0.2, 0.1, 0.7, 0.4, 0.7, 0.7])

关于python - 如何在 python 中使用多个索引同时填充 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58897160/

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