gpt4 book ai didi

python - 使用具有冗余元素的 python 数组索引 python 数组

转载 作者:太空狗 更新时间:2023-10-30 02:00:09 25 4
gpt4 key购买 nike

我遇到了数组索引问题。假设您有一个数组 a 和另一个数组 b,您希望将其用作 a 的索引,以便将一些值分配给 b 元素指向的位置。

a=numpy.zeros(5)
print a

[ 0. 0. 0. 0. 0.]

现在我想将第二个元素增加两次

b=numpy.array([1,1])
a[b]+=1.
print a

[ 0. 1. 0. 0. 0.]

虽然我希望有

[ 0.  2.  0.  0.  0.] 

如果数组 b 没有冗余(其元素的所有值都不同),则没有问题。有人找到了避免使用 for 循环的解决方案吗?这是numpy中的错误吗?提前致谢

最佳答案

当您使用整数数组索引另一个数组时,NumPy 无法创建足够的 View ,因为生成的数组可能无法用步幅表示。因此,它将返回一个副本:

>>> a = np.zeros(5)
>>> b = np.array([1, 1])
>>> c = a[b]
>>> c
array([ 0., 0.])
>>> c.base is a
False

当将此索引与 += 等就地操作一起使用时,NumPy 将以不同于您预期的方式解释它。它不是“遍历索引数组并依次对每个元素执行操作”,而是首先选择由 b 索引的所有值(在本例中,只有一个索引为 1 的元素),然后对这些元素一次执行操作。

关于python - 使用具有冗余元素的 python 数组索引 python 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6913997/

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