gpt4 book ai didi

python - 如何使用嵌套索引为数组元素分配新值?

转载 作者:太空宇宙 更新时间:2023-11-04 10:00:51 28 4
gpt4 key购买 nike

import numpy as np

data = np.zeros((5,3))

In [44]: data
Out[44]:
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])

In [45]: data[[0,1,2]] = 2

In [46]: data
Out[46]:
array([[ 2., 2., 2.],
[ 2., 2., 2.],
[ 2., 2., 2.],
[ 0., 0., 0.],
[ 0., 0., 0.]])

In [47]: data[[0,1,2]][2]
Out[47]: array([ 2., 2., 2.])

In [48]: data[[0,1,2]][2] = 3

In [49]: data[[0,1,2]][2]
Out[49]: array([ 2., 2., 2.])

我原以为最后的结果是 [3., 3., 3.]。为什么使用双索引替换元素不起作用?有没有办法使用双索引更改数组的元素?

最佳答案

data[[0,1,2]][2] = 3  

data[[0,1,2]]data 的一部分的副本,而不是 view。表达式正在修改该副本,而不是 data 本身。

In [298]: data=np.arange(15).reshape(5,3)
In [299]: data[[0,1,2]]
Out[299]:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
In [300]: data[[0,1,2]][2]
Out[300]: array([6, 7, 8])

这个作业有效:

data[[0,1,2]] = 2

因为 'advanced-indexing' 就在 = 之前。在第一种情况下,它由另一层索引分隔。

关于python - 如何使用嵌套索引为数组元素分配新值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43666720/

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