gpt4 book ai didi

python - Numpy 花式索引和赋值

转载 作者:太空狗 更新时间:2023-10-29 17:51:32 25 4
gpt4 key购买 nike

通常 numpy 强制赋值的左侧和右侧匹配,所以例如如果我做 a[:] = bb 必须是相同的形状或广播到与 a 相同的形状。但这条规则似乎有一个异常(exception):

>>> a = np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b = a.copy()
>>> a[[0,1,2]] = b[::2]
>>> a
array([0, 2, 4, 3, 4, 5, 6, 7, 8, 9])
>>> a[np.arange(10)] = b[:2]
>>> a
array([0, 1, 0, 1, 0, 1, 0, 1, 0, 1])

它似乎只适用于一维数组,并且只有在赋值的左侧有漂亮的索引,但我无法在任何地方找到有关此行为的文档。是否记录了此行为(如果记录在何处),还有人可以举例说明何时可能有用吗?

更新:

似乎 numpy 的 flatiter 类型也有这种行为,flatiter 和花哨的索引之间是否存在某种我不知道的联系?

>>> a.flat = [10,11]
>>> a
array([10, 11, 10, 11, 10, 11, 10, 11, 10, 11])
>>> a.flat[:] = [2,3,4]
>>> a
array([2, 3, 4, 2, 3, 4, 2, 3, 4, 2])
>>> a.flat = range(100)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

最佳答案

我认为这种行为是以 R 及其祖先 S/S-plus 为蓝本的。这就是列表分配(“向量”分配)在那里工作的方式,它被称为“回收”。 R 项目网站对此进行了讨论,但我在 this link 找到了更有启发性的解释。 .在 R 中,矢量是测量值的集合,因此按照它的方式填充或修剪它是有意义的。这种逻辑中有多少会影响到 numpy,以及为什么,这仍然是一个很好的问题。

关于python - Numpy 花式索引和赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9423984/

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