【发布时间】:2019-02-23 00:22:08
【问题描述】:
我一直在尝试执行以下操作:
给定一个数组,选择第一组索引。然后选择另一组索引,并将数组的值更改为其他值。
示例代码:
r = np.random.randn(15)
ind_a = [0, 2, 3, 6, 8, 9, 10, 12, 14]
ind_b = [0, 4, 5]
r[ind_a][ind_b] = 1
我希望能够将第一组索引的第 0、第 4 和第 5 个索引设置为 1。所以这会将原始数组的第 0、第 8 和第 9 个索引设置为 1。
但我使用的代码不起作用。还有其他方法可以完成这项工作吗?我花了几个小时研究布尔掩码和花哨的索引试图规避这个问题,但似乎无法弄清楚。
非常感谢!
【问题讨论】:
-
r[ind_a]是一个带有复制值的新数组。[ind_b]=1正在修改该副本,而不是原始r。您需要一个结合了两者选择的单一索引。 -
我是这么认为的,但是在这种情况下我无法弄清楚如何做到这一点
-
将
ind_a转换为数组,然后使用r[ind_a[ind_b]]
标签: python arrays numpy indexing