gpt4 book ai didi

python - numpy 元素值不会使用索引更改

转载 作者:行者123 更新时间:2023-11-28 22:50:24 25 4
gpt4 key购买 nike

a = [3,4,5,6]
b = [1,2,3]
adj = np.random.rand(10,10)
adj[a,:][:,b] = adj[a,:][:,b] + 1000

为什么adj的元素值在 adj[a,:][:,b] = adj[a,:][:,b] + 1000 之后不改变?

最佳答案

正如已经指出的那样,花式索引总是返回一个副本,而不是一个切片。因此,您正在修改后来被丢弃的副本。

当用数组索引多个维度时,这会被广播到一个共同的形状,所以下面的任何一个也可以为你做这个技巧:

a = [[3], [4], [5], [6]]
b = [1, 2, 3]
adj[a, b] += 1000

a = np.array([3, 4, 5, 6]
b = [1, 2, 3]
adj[a[:, None], b] += 1000

当然,对于您的实际索引,您的第一个选项应该是什么,尽管如果它们不是所有连续的整数,它将不起作用:

adj[3:7, 1:4] += 1000

关于python - numpy 元素值不会使用索引更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22682428/

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