【发布时间】:2021-05-02 22:02:05
【问题描述】:
我有 2 个 numpy 数组:
a = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
b = np.array([2, 1, 2])
我想使用b 作为a 列的起始索引,并将a 的所有值从这些列索引开始设置为0,如下所示:
np.array([[1, 2, 3],
[4, 0, 6],
[0, 0, 0]])
即,将第 1 列的元素从位置 2 开始设置为 0,将第 2 列的元素从位置 1 开始设置为 0,并将第 3 列的元素从位置 2 开始设置为 0。
当我尝试这个时:
a[:, b:] = 0
我明白了
TypeError: only integer scalar arrays can be converted to a scalar index
有没有办法在不使用 for 循环的情况下使用索引数组进行切片?
编辑:更新示例以显示索引可以是任意的
【问题讨论】:
-
我不明白为什么是
a[:, b:] = 0而不是a[:, b] = 0(b 指定的所有行和列)? -
你理解错误。在
[x:](a slice)x中只能是整数,不能是数组。
标签: python arrays numpy slice matrix-indexing