我一直在尝试执行以下操作:
给出一个数组,选择第一组索引。然后选择另一组索引,并将数组的值更改为其他值。
示例代码:
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.。
但是我正在使用的代码无法正常工作。还有其他方法可以做到这一点吗?我花了几个小时来研究布尔掩码和花式索引方面的内容,试图规避该问题,但似乎无法弄清楚。
非常感谢!
答案 0 :(得分:1)
您的问题的措词使我有些困惑,但是让我看看是否有帮助。
问题:以ind_b中的数字作为ind_a的索引。使用ind_a中选择的数字作为应设置为1的r的索引。
答案: 使用for循环,如下所示:
for i in ind_b:
j = ind_a[i]
r[j] = 1
这将更改r如下:
>>> r
[1, 1, 2, 3, 4, 5, 6, 7, 1, 1, 10, 11, 12, 13, 14]
答案 1 :(得分:1)
您需要先对ind_a
进行切片:
r[np.array(ind_a)[ind_b]] = 1
print(r)
array([1., 0., 0., 0., 0., 0., 0., 0., 1., 1., 0., 0., 0., 0., 0.])